1
我們有它包含以下部分(簡體)一個MsBuild.proj文件:如何確保msbuild文件中的目標只被調用一次?
<Target Name="WEB" DependsOnTargets="CleanResults;UpdateAssemblyInfo;Services;Business">
<!-- Other build and release stuff -->
<MSBuild Projects="$(CreateInstallValuesScriptProjectFile)" Properties="DatabaseStructureLocation=$(DatabaseDirectory)\Sandbox\002.Structure" />
</Target>
基本上,InstallValuesScript產生在我們databasedirectory .sql文件,將在更新我們的應用程序的版本數據庫。相當簡單。
構建被稱爲例如:
MSBuild msbuild.proj /m /t:WEB /p:Configuration=Release;DoRelease=true;DoSandBox=false;DoWix=false /fileLoggerParameters:LogFile=msbuild.log;Verbosity=normal;Encoding=UTF-8
然而,我們所看到的是,InstallValues部分被多次調用,並因此該文件被創建了幾次,並在不同的位置......很顯然,當構建編譯兩三次而不是一次時,這很煩人,但並不是真正的關鍵(只是變慢了一點),但是對於這個Installvalues文件,我們真的不希望它的多個實例。
那麼,一個目標可以被多次調用?也許是由編譯一個依賴程序集引起的?有關這種奇怪的現象的一些亮點將受到高度讚賞。
是的,很可能問題會調用的嵌套。我認爲可能會更好地從頭開始重做構建。但是,多謝我指向日誌,請務必首先檢查明顯的解決方案:) – Sam 2010-10-01 07:30:40
即使使用'',MSBuild也不會多次調用目標。達到此目的的唯一方法是使用''任務指定不同的屬性。 –
2011-05-08 20:47:13
@Dmitry Lobanov:更正。 @Sam:對錯誤信息抱歉 – 2011-05-12 19:41:02