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 里面是这么说的:
当在程序集的属性页中选 Debug 模式时,设置如下:
当选择 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) 文件保存着调试和项目状态信息。千一网络编辑注)。
注意若要更改项目的生成模式,不能只从项目属性页上点“配置”下拉框更改,那样不起作用,必须点右上角的“配置管理器”按钮才能更改。