我想使用 CCNetRequestSource,它是启动 MSbuild 任务的触发器的名称。例如,当执行“toto”触发器时,我想在 MSBuild 上启动“toto”目标。是否可以?
这是一个夜间构建,我想在这个时候创建 MSI 文件和文档,我在 MSBuild 中创建了特定的目标,但我不知道如何仅在抛出特定触发器时执行它。
我想使用 CCNetRequestSource,它是启动 MSbuild 任务的触发器的名称。例如,当执行“toto”触发器时,我想在 MSBuild 上启动“toto”目标。是否可以?
这是一个夜间构建,我想在这个时候创建 MSI 文件和文档,我在 MSBuild 中创建了特定的目标,但我不知道如何仅在抛出特定触发器时执行它。
有 msbuild 语法可以帮助您解决这个问题。看看以下链接:
您应该尝试为 CruiseControl 添加一个外观构建文件以调用该文件,该文件将委托给您的解决方案文件,其构造类似于以下内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Choose>
<!-- If the toto CCNETRequestSource was submitted -->
<When Condition="'$(CCNetRequestSource)'=='toto'">
<PropertyGroup>
<Target Name="toto">
<MSBuild Projects="MyProject.sln" Properties="Configuration=Debug" Targets="toto" />
</Target>
</PropertyGroup>
</When>
<Otherwise><!-- Place your standard build call here --></Otherwise>
</Choose>
</Target>
</Project>
我这样做:
<Project DefaultTargets="Integration" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition="'$(CCNetBuildCondition)' == 'ForceBuild'">Release</Configuration>
<Configuration Condition="'$(CCNetBuildCondition)' != 'ForceBuild'">Debug</Configuration>
</PropertyGroup>
<Target Name="Integration" DependsOnTargets="ConstruireSolution;FaireDoc">
</Target>
<Target Name="ConstruireSolution" >
<!-- with first build -->
<MSBuild Projects="MyBuild.sln" Properties="Configuration=$(Configuration)" Targets="Clean;Rebuild" />
</Target>
<Target Name="FaireDoc" Condition=" '$(CCNetRequestSource)' =='FaireDoc'">
<!--Build to add when FaireDoc trigger is fired -->
<MSBuild Projects="C:\CI\Plateforme\Documentation\Doc.shfbproj" Targets="Build" />
</Target>
我选择这个解决方案是因为我总是需要第一个构建 :) 第二个目标是一个沙堡项目,只在晚上吃午饭 :)