是VisualStudio项目中的obj / debug,一个临时位置?

时间:2012-10-13 02:44:22

标签: c# windows visual-studio

简而言之,我有一个单独的WCF VisualStudio项目,用于编译CLient和Contract dll。一旦我使用MS-BUILD(命令行)构建项目,我就有一个构建后的nant任务,可以通过Client和Contract dll复制到另一个位置。

现在我更容易从obj / Debug文件夹中选择这些dll(因为它们只有CLient和Contract dll而不是它们的依赖项)。

但是我听说obj / Debug文件夹是临时的..我们需要依赖bin / Debug来获取dll。

是否有必要从bin / debug中获取它而不是obj / Debug以及为什么?

2 个答案:

答案 0 :(得分:3)

obj \ Debug的作用是MSBuild的未记录的实现细节。它的存在是因为MSBuild喜欢根据项目设置有条件地复制文件。确切的规则是错综复杂的,说得温和一点,你只能通过研究框架目录中的.targets文件来获得洞察力。这本身就高度依赖于您所针对的.NET版本。

如果你真的想知道它是什么让它勾选,那么从obj \ Debug复制文件,看看是什么击中了粉丝。请注意,这可能在您创建项目很久之后发生,因此当构建失败或生成错误的文件时,将永远存在FUD的强制转换。如果这听起来不是很有效,那就不行,然后避免破坏保修并从项目的输出目录中复制。 bin \ Debug和bin \ Release默认情况下。如果 产生问题,那么至少你可以在SO处询问有关它的问题。

答案 1 :(得分:2)

是。您应该从bin/Debug中获取二进制文件,或者更具体地在MSBuild上下文中获取变量OutputPath

http://msdn.microsoft.com/en-us/library/bb629394.aspx