2

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

现在我可以更轻松地从 obj/Debug 文件夹中选择这些 dll(因为它们只有 CLient 和 Contract dll 而没有它们的依赖项)。

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

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

4

2 回答 2

3

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

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

于 2012-10-13T13:15:14.240 回答
2

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

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

于 2012-10-13T05:41:05.797 回答