首页 文章

obj和bin文件夹(由Visual Studio创建)用于什么?

提问于
浏览
167

我在Visual Studio 2010中创建了一个新项目,并注意到我的项目目录中现在有两个名为 objbin 的新文件夹 .

在构建和调试时会创建一对类似的文件夹 - 这些文件夹是为什么用的?

4 回答

  • 11

    关于obj目录的一个有趣的事实:如果您在Web项目中设置了发布,则将要发布的文件将转移到obj \ Release \ Package \ PackageTmp . 如果您想自己发布文件而不是使用集成的VS功能,则可以获取实际需要在此部署的文件,而不是选择bin目录中的所有数字碎片 .

  • 183

    obj 文件夹包含 object, or intermediate, files ,它们是已编译的二进制文件,它们实际上是片段,它们将被组合以生成最终的可执行文件 . 编译器为每个源文件生成一个目标文件,这些文件放在 obj 文件夹中 .

    bin 文件夹包含 binary files ,它们是应用程序或库的实际可执行代码 .

    这些文件夹中的每一个都进一步细分为 DebugRelease 文件夹,这些文件夹只对应于项目的构建配置 . 上面讨论的两种类型的文件放在适当的文件夹中,具体取决于您执行的构建类型 . 这使您可以轻松确定使用调试符号构建哪些可执行文件,以及在启用优化并准备发布的情况下构建的可执行文件 .

    请注意,您可以在项目的“属性”中更改Visual Studio在编译期间输出可执行文件的位置 . 您还可以更改构建配置的名称和选定选项 .

  • 2

    obj 目录用于构建期间由编译器或构建系统生成的中间对象文件和其他临时数据文件 . bin 目录是将写入最终输出二进制文件(以及任何依赖项或其他可部署文件)的目录 .

    如果您愿意,可以在项目设置中更改用于这两个目的的实际目录 .

  • 16

    我鼓励你看到这个YouTube视频,它展示了C# bin and obj folders之间的区别,并解释了我们如何从增量/条件编译中获益 .

    C#编译分为两个步骤,详见下图: -

    • 编译: - 在编译阶段,单个C#代码文件被编译到各个编译单元中 . 这些单独编译的代码文件位于OBJ目录中 .

    • 链接: - 在链接阶段,这些单独编译的代码文件被链接以创建单个单元DLL和EXE . 这是在BIN目录中 .

    C# bin vs obj folders

    如果你比较bin和obj目录,你会在“obj”目录中找到更多的文件,因为它有单独的编译代码文件,而“bin”只有一个单元 .

    bin vs obj

相关问题