0

「CentralLibs.dll」と呼ばれるすべての中央再利用コードに使用するライブラリ プロジェクトがあります。

このライブラリは、展開中にすべてのサーバーで GAC を取得するため、DEV がローカルで作業しているときに便利にするために、ビルド後の新しい DLL でローカル GAC を自動更新するビルド後のイベントがあります。

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

最近、SDK がビルド サーバーにインストールされていないため、ビルド後のイベントに突っ込んでいる Cruise Control をセットアップしましたが、考えてみると、ビルドが発生するたびにライブラリ 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>

そのようなパラメータは存在しますか。MSBuild.exe / で運が悪いのですか? 詳細

4

2 に答える 2

3

おそらく、クルーズ コントロール専用のカスタム msbuild スクリプトを作成するでしょうが、それはおそらくあなたが望んでいたよりも多くの作業です。

代わりに、次のように、プロジェクト ファイルの Build event property group ステップに条件を追加することができます。

  <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>
于 2009-09-01T12:30:16.613 に答える
0

1つの方法は、環境変数NO_GACUTILを定義し、環境変数が設定されていないステップでのみgacutil.exeを実行することです。

または、gacutil.exeが存在する場合にのみ実行します(cmd.exeを使用if exist

于 2009-09-01T12:05:28.567 に答える