2012-09-17 124 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