2012-09-17 51 views
3

我有9个项目的解决方案。每个项目中的所有引用都将其CopyLocal属性设置为False。输出路径和MSBuild的

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

然而,当我指定的MSBuild的命令的输出路径,一些参考被复制,我不知道为什么?我忘了设置一些设置吗?有没有人见过这个?

+0

将“/ v:diag”附加到命令行,然后您将有大量的日志条目进行分析。 –

+0

你想在这里解决什么?您是否试图将所有内容都构建到相同的输出文件夹? –

回答

1

当你创建一个没有设置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