0

devenvでCleanandBuildを実行したいと思います。buildtypeフラグに含めることができるアイテムは1つだけであることに気付きました(Clean; Buildは許可されていません)。複数のBuildTypeを指定する方法を知っていますか?

<tasks>
  <devenv>
    <solutionfile>C:\Source\Developer.sln</solutionfile>
    <configuration>Release</configuration>
    <buildtype>Build</buildtype> // How to do Clean and build here???
    <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com</executable>
    <buildTimeoutSeconds>900</buildTimeoutSeconds>
  </devenv>
</tasks>
4

2 に答える 2

2

2つのタスクが必要です。各<devenv>ブロックは1つのdevenv.com呼び出しに対応します。構築するか、構築する代わりにdevenv.comのみ許可するオプション。最初にクリーンアップしてから通常どおりにビルドする場合は、2回呼び出す必要があるため、2つのタスクが必要です。/Clean/Rebuilddevenv.com

于 2011-05-06T02:06:20.013 に答える
1

これを回避する別の方法があります。それは、プロジェクトファイルに対してMSBUILDタスクを呼び出すことです。これにより、ソリューションファイルに対してdevenvが呼び出されます。これの利点は、単体テスト、コード分析などの思考を統合するのが簡単になることです。

これが私のCommon.Targetsからのいくつかのターゲットです

<Target Name="Clean">
    <RemoveDir Directories="$(BuildFolder)" />
    <MakeDir Directories="$(BuildFolder)" Condition="!Exists('$(BuildFolder)')" />

    <MSBuild Projects="$(SolutionName).sln" Properties="ReferencePath=$(ReferencePath);Configuration=$(Configuration)" Targets="Clean" />
</Target>

<Target Name="Compile" DependsOnTargets="Version">
    <MSBuild Projects="$(SolutionName).sln" Properties="ReferencePath=$(ReferencePath);Configuration=$(Configuration);OutputPath=$(OutputPath);OutDir=$(OutputPath)\;DeployDir=$(CodeDeployFolder)\;Deploy=true;BuildConstants=$(BuildConstants)" />
</Target>

次に、CruiseControlタスク用に

    <msbuild>
        <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>code</workingDirectory>
        <projectFile>Mailer.proj</projectFile>
        <targets>BuildAll;DistributeLibrary</targets>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
    </msbuild>

これにより、ビルドファーム全体に新しいプロセスを追加することも簡単になります。たとえば、StyleCop分析をプロジェクトに導入したい場合、CC.NET設定を変更する必要はなく、CodeAnalysisターゲットを導入/拡張して、その一部を作成します。 BuildAll

于 2011-06-11T11:42:28.003 に答える