我有一个包含 9 个项目的解决方案。每个项目中的所有引用都将其 CopyLocal 属性设置为 False。
当我从 VS 构建它时,这些引用的二进制文件都没有复制到输出构建目录。同样,当我使用 msbuild 构建时,我只看到项目二进制文件而没有引用。
但是,当我在 msbuild 命令中指定输出路径时,一些引用被复制了,我不知道为什么?有没有我忘记设置的设置?有人以前见过这个吗?
最佳答案
当您在未设置 OutDir
属性的情况下构建应用程序时,文件将复制到项目属性中指定的路径(Build\Output 路径)。在此之后,还有一个步骤将引用的项目输出(*.dll 文件)复制到您的应用程序 (*.exe) 的 OutDir
。但是,如果您将 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
关于visual-studio-2010 - 输出路径和 MSBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464350/