".NET中的'obj'目录是用来干什么的?"

71
'.NET 中的 'obj' 目录究竟是什么目的?'
2个回答

95

“obj”文件夹用于存储在编译过程中用于创建最终二进制文件的临时对象文件和其他文件。

“bin”文件夹是完整二进制文件(程序集)的输出文件夹。


59

除了 splattne的回答,我认为保留它(并且在编译后不清理掉)的 原因 是为了支持增量编译。如果你已经编译了100个类并且更改其中一个,那么只重新编译一个更改的类的代码,然后从新旧代码混合组装exe/dll会更有效率。

当然,增量编译比这复杂得多——它必须跟踪所有内容,以便能够检测到何时需要重新编译一个类,即使该类本身没有更改。(例如,如果一个类中出现了一个新的重载,一些调用者可能需要重新编译。)


“obj”文件的来源是什么?我问这个问题是因为我在Azure Cloud Service项目中遇到了一个问题,它正在打包错误版本的“System.Runtime.dll”。请参见此处 - Shaul Behr
@ShaulBehr:不确定您在这里所说的“源”是什么意思,但恐怕我无法为您解决问题。 - Jon Skeet
我的意思是,Visual Studio如何决定将给定DLL的哪个版本复制到obj文件夹中?在我的情况下,如果工作角色项目正在引用System.Runtime的v4.3.1版本,为什么Cloud Service项目会将不同版本的DLL复制到其obj文件夹中? - Shaul Behr
@ShaulBehr:很抱歉,我不知道 - 我没有做过任何Azure项目。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接