2009-09-01 61 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