专栏首页CSharp编程大全C#中的bin和obj文件夹有什么用?

C#中的bin和obj文件夹有什么用?

Bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。 obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置

obj和bin文件什么区别和联系

1.bin

bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。

在添加引用时,.NET会记录添加的引用绝对路径,这些设置保存在“每用户”文件中,(Solution.csproj.user),可以通过记事本打开查看。也可以在:项目属性—>通用属性—>引用路径里面查看。如果设置复制到本地为true,在生成项目时会自动拷贝该DLL到项目生成文件夹中(bin目录),否则不会拷贝。在生成项目时,对所添加的引用的是绝对路径,而在运行时程序集默认只在当前所在的路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用References 对象。

在bin\debug\目录中有两个文件,除了要生成的.exe或.dll文件外,还有个.pdb文件,这个.pdb文件中就记录了代码中的断点等调试信息。一般移植或者打包程序只需要Debug文件即可,里面包含.exe文件、.dll文件、.ini文件、.xml文件、.pdb文件、.lib文件、.config、.manifest文件、.png文件、.gif文件、.cur文件、自定义文件夹等。

在\bin\release\目录下只有一个.exe或.dll文件,Release模式下不包含调试信息,并对代码进行了优化。

2.obj

obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。

obj这个目录,在开发过程中可能会捣乱,比如你的一个引用的dll,更新了,然后你在vs开发环境里面重新删除后,又重新引用,或者直接更新引用了。因为每次编译时默认都是采用增量编译的原因,所以,这个时候,不论你点多少次编译,你会疑惑,明明是更新引用了,为什么新更新的那些函数和接口不存在,这个时候,你可以手工吧obj目录都删除掉一下,然后重新引用下,就可以正确的看到你更新的那些接口和函数了。 这个事实说明,obj在开发过程中,也是会被引用到的,并不只是在编译的时候起作用。

都可以删掉, 重新编译又生成了

Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。   .cs 类文件。源代码都写在这里,主要就看这里的代码。   .resx 资源文件,一些资源存放在这里,一般不需要看。   .csproj C#项目文件,用VS打开这个文件就可以直接打开这个项目,自动生成,不需要看。   .csproj.user 是一个配置文件,自动生成的,会记录项目生成路径、项目启动程序等信息。也不需要看。   .Designer.cs 设计文件,自动生成,不需要看。   .aspx 是网页文件,HTML代码写在这里面。   sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合   *.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。   比如是生成Debug模式,还是Release模式,是通用CPU还是专用的等

本文分享自微信公众号 - CSharp编程大全(y438679770)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#核心概念--装箱和拆箱(什么是装箱和拆箱)

    装箱(boxing)和拆箱(unboxing)是C#类型系统的核心概念.是不同于C与C++的新概念!,通过装箱和拆箱操作,能够在值类型和引用类型中架起一做桥梁....

    zls365
  • WPF快速入门系列(1)——WPF布局概览

      关于WPF早在一年前就已经看过《深入浅出WPF》这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门...

    zls365
  • C# 修改配置文件进行窗体logo切换

    zls365
  • 用C写一个web服务器(三) Linux下用GCC进行项目编译

    前言 离职前对做过的支付系统进行了一番#总结,继续完善我的C服务器。 本想着接下来大概实现一下 CGI 协议,但是实现过程中被一个问题卡住了: C进程与php进...

    枕边书
  • django+uwsgi+nginx部署

      说明:Linux系统内置了python2.7,如果你的Django项目依赖于Python3,请使用pip3 install django安装Python3环...

    py3study
  • 提升销售效率 阿特拉斯柯普柯增购样本通

    近日,世界领先的工业生产解决方案提供商阿特拉斯·科普柯(上海)贸易有限公司与样本通达成增购协议,新增部署其压缩机事业部,超过百名销售人员与渠道经销商将通过样本通...

    资讯观察
  • 小朋友学C语言(24):位运算符

    位运算符有三个:“与(&)”、“或(|)”、“异或(^)”。 在了解位运算符之前,请先复习逻辑运算符: 小朋友学C语言(12):逻辑运算符 位运算,就是对应的b...

    海天一树
  • go test遇到的一些问题-command-line-arguments undefined: xxxxx

    问题是在我写算法题的时候出的,test后缀的文件编译报command-line-arguments undefined: xxxxx

    ydymz
  • 如何减轻memcached的放大攻击

    在2018年2月27日,Cloudflare 和 Arbor Networks 公司于周二发出警告称,恶意攻击者正在滥用 Memcached 协议发起分布式拒绝...

    姚啊姚
  • 算法(二)蓄水池抽样算法快速随机抽取reads

    fastq文件往往都很大,出于测试目的,我们经常要从fastq文件中随机抽取reads,生成一个小一点的fastq文件,以加快测试效率。假设我们要从一个包含大约...

    一只羊

扫码关注云+社区

领取腾讯云代金券