Как указать несколько типов сборки в задачах devenv, CruiseControl.net - PullRequest
0 голосов
/ 06 мая 2011

Я хочу сделать Clean and Build в devenv.Я только что заметил, что флаг типа сборки может иметь только один элемент (Очистить; Сборка не разрешена).У вас есть идея, как указать несколько типов 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>

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Вам нужно две задачи. Каждый блок <devenv> соответствует одному вызову devenv.com. Опции devenv.com позволяют вам только /Clean или /Rebuild вместо построения. Если вы хотите сначала выполнить очистку, а затем выполнить обычную сборку, вам потребуется дважды вызвать devenv.com, и, следовательно, вам потребуется две задачи.

1 голос
/ 11 июня 2011

Есть и другой способ, который заключается в том, чтобы вызвать задачу 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

...