我有9个项目的解决方案。每个项目中的所有引用都将其CopyLocal属性设置为False。
当我从VS构建它时,这些引用的二进制文件都不会被复制到输出构建目录。类似地,当我使用msbuild构建时,我只看到项目二进制文件而没有引用。
但是,当我在msbuild命令中指定输出路径时,会复制一些引用并且我不知道为什么?我忘了设置一些设置吗?有没有人见过这个?
答案 0 :(得分:2)
在不设置OutDir
属性的情况下构建应用程序时,文件将复制到项目属性(Build \ Output path)中指定的路径。在此之后,还有另一个步骤将引用的项目输出(* .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