3

我有一个包含 9 个项目的解决方案。每个项目中的所有引用都将其 CopyLocal 属性设置为 False。

当我从 VS 构建它时,这些引用的二进制文件都不会复制到输出构建目录。同样,当我使用 msbuild 构建时,我只看到项目二进制文件而没有引用。

但是,当我在 msbuild 命令中指定输出路径时,会复制一些引用,我不知道为什么?是否有一些我忘记设置的设置?有没有人见过这个?

4

1 回答 1

2

当您在不设置属性的情况下构建应用程序时OutDir,文件将复制到项目属性中指定的路径(构建\输出路径)。在此之后,还有另一个步骤将引用的项目输出(*.dll 文件)复制到OutDir您的应用程序 (*.exe)。但是,如果您设置CopyLocal为 false,则不会发生最后一步。像这样:

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\b\bin

请注意两者OutDir不同(并且在您的项目属性中指定的不同)这一事实。

但是当您OutDir使用命令提示符设置时,您将两个OutDir参数设置为相同的路径。仍然没有 DLL 的最终副本到您的应用程序的同一目录,除了它与您第一次构建 DLL 和 EXE 的位置相同。像这样:

msbuild yourSolution.sln /p:OutDir="c:\a\bin\"

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\a\bin
于 2013-01-11T16:09:50.597 回答