2011-03-15 317 views

回答

150

obj文件夹包含对象或中间文件,它们是已编译的尚未链接的二进制文件。它们基本上是可以组合起来产生最终可执行文件的片段。编译器为每个源文件生成一个目标文件,并将这些文件放入obj文件夹中。

bin文件夹包含二进制文件,它们是您的应用程序或库的实际可执行代码。

这些文件夹中的每一个都进一步细分为DebugRelease文件夹,这些文件夹仅与项目的构建配置相对应。根据您执行的构建类型,上面讨论的两种类型的文件被放置到适当的文件夹中。这使您可以轻松确定哪些可执行文件是使用调试符号构建的,哪些可执行文件是在启用优化并准备发布的情况下构建的。

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

+3

无论出于何种原因,我的项目没有针对obj和bin文件夹的调试或发布子文件夹。如果编辑我的项目设置以根据当前选定的配置构建到调试/发布子文件夹,则会出现错误,指出在调试我的应用程序时无法创建数据类型。我的应用程序只在dll的bin文件夹中查找,从不知道要查看调试或发布文件夹。我该如何纠正? – 2013-08-21 20:54:43

+0

只是为了澄清一个错字,我在我的obj文件夹中有一个调试和发布文件夹,但在bin文件夹中没有调试或发布文件夹。 – 2013-08-21 21:06:45

+3

@Sly我不明白你在问什么。项目构建应用程序(EXE)或库(DLL)。它不能同时建立。因此,如果您的项目创建了一个应用程序,它不会将任何DLL放入您的bin文件夹。如果你的项目建立了一个库,当你尝试调试它时你会得到一个错误,因为你不能执行一个DLL。无论如何,这听起来像你已经改变了项目属性中的默认输出路径。如果您需要更多帮助,请提出新问题。一定要很好地记录这个问题,如果需要的话,包括你的项目配置的截图。 – 2013-08-22 09:14:08

12

obj目录用于编译或构建系统在生成过程中生成的中间对象文件和其他瞬态数据文件。 bin目录是最终输出二进制文件(以及任何依赖关系或其他可部署文件)将被写入的目录。

如果您愿意,您可以在项目设置中更改用于两种用途的实际目录。

1

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

相关问题