`

C# 项目中的 bin 目录和 obj 目录的区别,以及 Debug 版本和 Release 版本的区别

阅读更多
1.关于 bin 目录和 obj 目录

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

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

2.“是否复制到本地”的设置问题

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

某些软件从功能上有企业版、标准版之分,.NET 程序集有 Debug 和 Release之 区别。关于 Debug 和 Release,MSDN 里面是这么说的:
Visual Studio 项目对程序的发布和调试版本分别有单独的配置。
顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发。
如果在 Visual Studio 中创建程序,Visual Studio 将自动创建这些配置并设置适当的默认选项和其他设置。在默认设置下:
程序的“调试”配置用全部符号调试信息编译,不进行优化。(优化会使调试复杂化,因为源代码和生成的指令间的关系更加复杂。)
程序的“发布”配置被完全优化,不包含任何符号调试信息。调试信息可在单独的 PDB 文件中生成。

当在程序集的属性页中选 Debug 模式时,设置如下:

Debug

当选择 Release 模式时,设置如下:

Release

两者的不同点如下:
项目 Debug Release
条件编译常数 Debug;Trace Trace
优化代码 False True
输出路径 bin\Debug bin\Release
生成调试信息 True False

Debug 模式下生成的程序集为调试版本,未经优化;在 bin\debug\ 目录中有两个文件,除了要生成的 .exe 或 .dll 文件外,还有个 .pdb 文件,这个 .pdb 文件中就记录了代码中的断点等调试信息;Release 模式下不包含调试信息,并对代码进行了优化,\bin\Release\ 目录下只有一个 .exe 或 .dll 文件(也可能有 .pdb 文件,程序调试数据库 (PDB) 文件保存着调试和项目状态信息。千一网络编辑注)。

注意若要更改项目的生成模式,不能只从项目属性页上点“配置”下拉框更改,那样不起作用,必须点右上角的“配置管理器”按钮才能更改。





  • 大小: 45.4 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    删除Debug和Release文件夹 到回收站

    工作中有时会拷贝VS项目,但是VS项目bin和obj下的Debug、Release文件夹包含很多编译后的文件,这些文件通常没有必要一起拷贝。所以我就写了个小工具给VS项目瘦身。主要功能就是Winform中选择VS项目总目录,删除目录...

    删除bin,obj文件夹工具

    一个大工程下,如果有很多小工程,用这个工具可以一次性删除工程下的bin,obj文件夹。很方便~

    代码_C#_obj_obj文件_VS2019_

    用c#语言在vs中加载obj模型,有利于3d模型在vs中展示

    删除 bin 和 obj

    删除 bin 和 obj

    C# 利用csgl读取.obj模型

    国内用C#调用CSGL的OPENGL库源代码不多,这个是我参考了很多代码自己写出来的,下载的很多都是烧芯片的程序,这个效率还可以啦。 读取.obj是我自己看着文件格式自己读的,肯定有很多不完善的,目前只能读取面,不能...

    解决VS2010无法将obj目录下文件复制到bin目录问题

    解决VS2010无法将obj目录下文件复制到bin目录问题,亲测完美解决。

    C# load obj

    用C#编写的读取OBJ的类,帮助大家更好的学习OBJ文件格式的读取。

    Unity项目目录下面Assets、Library,obj,Temp干嘛的?存放什么?答案pdf

    Unity项目目录下面Assets、Library,obj,Temp干嘛的?存放什么?

    C#导入Obj模型文件并显示

    使用C#WinForm加载OBJ的三维模型文件并显示出来,支持鼠标拾取模型,支持三维场景漫游,支持自动计算帧率,。

    C#程序开发房里宝典(第二版) 源码

    │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─Ex01_02 │ └─UniteMenu │ └─UniteMenu │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─...

    c#遍历obj属性用例

    c#遍历obj属性用例,非常实用的文档 网络搜集

    C#23种设计模式

    │ │ └─C#设计模式(6)——原型模式(Prototype Patt O技术博客_files │ └─PrototypePattern │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─07.Adapter...

    C#技巧之快速删除bin和obj文件夹的方法

    C#程序总会生成bin和obj文件夹,为了减小源码的大小,就有必要将这两个文件夹删除,于是想到用批处理文件来删除

    C#程序开发房里宝典(第二版) 源码(4)

    │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─EX04_02 │ └─ImageStr │ └─ImageStr │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─...

    C#程序开发房里宝典(第二版) 源码(2)

    │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─Ex02_02 │ └─VisionUnderLine │ └─VisionUnderLine │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug...

    C#程序开发房里宝典(第二版) 源码(7)

    │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─Ex07_02 │ └─媞犰毨销、关铭厌郍启誡窗机 │ └─媞犰毨销、关铭厌郍启誡窗机 │ ├─bin │ │ └─Debug │ ...

    3D-3jsbin2obj.zip

    3D-3jsbin2obj.zip,将3.js二进制模型转换为wavefront.obj格式,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。

    .obj模型读取显示 c#版

    .obj模型文件读取与显示 基于microsoft c#语言实现

    dosbox全套(包括dosbox、lib.exe、link.exe、masm.exe、debug.exe、obj2asm.exe).zip

    使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。 masm.exe对 *.asm文件进行编译,生成包含机器代码的目标文件(.obj文件)。 link.exe对 *.obj目标文件进行连接,得到可执行文件(.exe...

    C#程序开发房里宝典(第二版) 源码(6)

    │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug │ │ └─TempPE │ └─Properties ├─Ex06_02 │ └─CreateTempFile │ └─CreateTempFile │ ├─bin │ │ └─Debug │ ├─obj │ │ └─Debug ...

Global site tag (gtag.js) - Google Analytics