0

我想在 devenv 中进行清理和构建。我刚刚注意到 buildtype 标志只能有一个项目(Clean;Build not allowed)。你知道如何指定多个 BuildTypes 吗?

<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

你需要两个任务。每个<devenv>块对应一个devenv.com调用。选项devenv.com只允许您/Clean/Rebuild代替构建。如果你想先清理然后正常构建,你需要调用devenv.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 目标并使其成为其中的一部分全部构建

于 2011-06-11T11:42:28.003 回答