2009-09-01 66 views
0

我們有我們使用名爲「CentralLibs.dll」如何排除喬布斯使用的MSBuild及巡航控制

該庫被部署在我們的所有服務器上GAC'd我們所有的中央重用的代碼庫項目後生成所以爲了讓DEVs在本地工作時更加便利,這是一個後期構建事件,可以使用新的DLL後期構建自動更新其本地GAC。

cd $(ProjectDir)\bin\Debug 
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if CentralLibs.dll 

最近,我們已經設置巡航控制,這是因爲SDK不是在構建服務器上安裝的生成後事件嘔吐,但想着它,我不是真的想庫GAC做無論如何,每次構建都會發生。

有什麼方法可以將額外的開關應用於我們的CC.NET MSBuild命令,以告訴它不要運行生成後事件。目前看起來像。

<msbuild> 
    <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable> 
    <workingDirectory>C:\BuildRepo\trunk\CentralLibs\</workingDirectory> 
    <projectFile>CentralLibs.sln</projectFile> 
    <buildArgs>/noconsolelogger /p:Configuration=Debug /v:quiet</buildArgs> 
    <targets>Build</targets> 
    <timeout>600</timeout> 
</msbuild> 

我想我正在尋找像一個/nopostbuild開關,我可以適用於<buildArgs>標籤

難道這樣的PARAM存在。 MSBuild.exe /沒有很多運氣?詳細信息

回答

2

我可能會創建一個自定義的MSBuild腳本只是巡航控制,但多數民衆贊成不是你想可能更多的工作。

相反,你可以做的就是添加一個條件,在項目文件中生成的事件屬性組的步驟如下所示:

<PropertyGroup Condition="$(DoEvents)!='false'"> 
     <PostBuildEvent>cd $(ProjectDir)\bin\Debug"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if CentralLibs.dll</PostBuildEvent> 
    </PropertyGroup> 

然後在巡航控制添加的DoEvents屬性,如:

<msbuild> 
    <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable> 
    <workingDirectory>C:\BuildRepo\trunk\CentralLibs\</workingDirectory>  
    <projectFile>CentralLibs.sln</projectFile> 
    <buildArgs>/noconsolelogger /p:Configuration=Debug /p:DoEvents=false /v:quiet</buildArgs>  
    <targets>Build</targets> 
    <timeout>600</timeout> 
</msbuild> 
+0

優秀的約翰。非常感謝。這很棒。 –

0

一種方法是定義環境變量NO_GACUTIL,並且只在未設置環境變量的步驟中運行gacutil.exe。

另外,只有運行的Gacutil.exe如果它存在(使用CMD.EXE的if exist