#c# #visual-studio #msbuild #cruisecontrol.net #devenv
#c# #visual-studio #msbuild #cruisecontrol.net #devenv
Вопрос:
Я хочу выполнить очистку и сборку в devenv. Я только что заметил, что флаг buildtype может содержать только один элемент (чистый; Сборка не разрешена). У вас есть какие-либо идеи, как указать несколько типов сборки?
<tasks>
<devenv>
<solutionfile>C:SourceDeveloper.sln</solutionfile>
<configuration>Release</configuration>
<buildtype>Build</buildtype> // How to do Clean and build here???
<executable>C:Program Files (x86)Microsoft Visual Studio 9.0Common7IDEdevenv.com</executable>
<buildTimeoutSeconds>900</buildTimeoutSeconds>
</devenv>
</tasks>
Ответ №1:
Вам нужны две задачи. Каждый <devenv>
блок соответствует одному devenv.com
вызову. Опции devenv.com
позволяют вам /Clean
или /Rebuild
только вместо сборки. Если вы хотите сначала очистить, а затем выполнить обычную сборку, вам нужно будет вызвать devenv.com
дважды, и поэтому вам нужны две задачи.
Ответ №2:
Есть другой способ обойти это, который заключается в вызове задачи MSBUILD для файла проекта; это, в свою очередь, вызывает devenv для файла решения; преимущество этого в том, что это упрощает интеграцию таких идей, как модульное тестирование, анализ кода и т.д.
Вот пара целей из моего общего.Цели
<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:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe</executable>
<workingDirectory>code</workingDirectory>
<projectFile>Mailer.proj</projectFile>
<targets>BuildAll;DistributeLibrary</targets>
<logger>C:Program FilesCruiseControl.NETserverThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
Это также упрощает добавление новых процессов в вашей ферме сборки, например, скажем, вы хотите внедрить анализ StyleCop в свой проект, вам не нужно изменять CC.NET настройки просто вводят / расширяют цель CodeAnalysis и делают эту часть BuildAll