yes*_*aaj 201 build visual-studio
我在Visual Studio 2010中创建了一个新项目,并注意到现在有两个新文件夹命名obj
并bin
在我的项目目录中.
在构建和调试时会创建一对类似的文件夹 - 这些文件夹是为什么用的?
Cod*_*ray 211
该obj
文件夹包含对象或中间文件,这些文件是尚未链接的已编译二进制文件.它们本质上是将被合并以产生最终可执行文件的片段.编译器为每个源文件生成一个目标文件,并将这些文件放入该obj
文件夹中.
该bin
文件夹包含二进制文件,这些文件是应用程序或库的实际可执行代码.
这些文件夹中的每一个都进一步细分为Debug
和Release
文件夹,这些文件夹只对应于项目的构建配置.上面讨论的两种类型的文件放在适当的文件夹中,具体取决于您执行的构建类型.这使您可以轻松确定使用调试符号构建哪些可执行文件,以及在启用优化并准备发布的情况下构建的可执行文件.
请注意,您可以在项目的"属性"中更改Visual Studio在编译期间输出可执行文件的位置.您还可以更改构建配置的名称和选定选项.
Shi*_*ala 33
我建议你看看这个youtube视频,它展示了C#bin和obj文件夹之间的区别,并解释了我们如何从增量/条件编译中获益.
C#编译分为两个步骤,详见下图: -
如果你比较bin和obj目录,你会在"obj"目录中找到更多的文件,因为它有单独的编译代码文件,而"bin"只有一个单元.
Jos*_*osh 18
该obj
目录用于在构建期间由编译器或构建系统生成的中间对象文件和其他临时数据文件.该bin
目录是将写入最终输出二进制文件(以及任何依赖项或其他可部署文件)的目录.
如果您愿意,可以在项目设置中更改用于这两个目的的实际目录.
setup
如果您正在使用项目,请务必小心;Visual Studio 安装项目Primary Output
从obj
文件夹而不是bin
.
我发布了我认为已混淆的应用程序并在msi
设置中签名了很长一段时间,然后我发现部署的应用程序文件实际上既没有混淆也没有签名,因为我在文件夹程序集上执行构建后过程bin
并且应该瞄准该obj
文件夹而是装配体。
恕我直言,这远非直观,但一般setup
方法是使用Primary Output
项目的,这就是obj
文件夹。顺便说一句,如果有人能阐明这一点,我会很高兴。
关于 obj 目录的一个有趣事实:如果您在 Web 项目中设置了发布,则将发布的文件会暂存到 obj\Release\Package\PackageTmp。如果您想自己发布文件而不是使用集成的 VS 功能,您可以在这里抓取您实际需要部署的文件,而不是在 bin 目录中挑选所有数字碎片。
归档时间: |
|
查看次数: |
105869 次 |
最近记录: |