Elegir un MSBuldTarget para poner en marcha con Cruisecontrol.Net
-
09-09-2019 - |
Pregunta
Quiero usar CCNetRequestSource wich es el nombre de la puesta en marcha del gatillo wich la tarea MSBUILD. Para exemple cuando el gatillo "toto" se exected quiero lanzar el objetivo "toto" en MSBUILD. Es posible ? Es por una acumulación de todas las noches, quiero crear archivos MSI y doc en este momento, he creado el objetivo específico en MSBuild pero yo no encontré la forma de ejecutar sólo cuando un disparador específico es un tiro.
Solución
Hay sintaxis msbuild que debe ayudar con esto. Echar un vistazo a los siguientes enlaces:
- MSBuild Tareas - Para ejecutar otro proyecto
- condicionales construcciones en MSBuild - para que pueda elegir entre las diferentes configuraciones del proyecto
Usted debe tratar de añadir un fichero de construcción de fachada para CruiseControl para llamar a que delegar en sus archivos de solución con una construcción similar a la siguiente:
<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>
Otros consejos
Me lo hacen así:
<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>
Elijo esta solución porque yo siempre necesito la primera construcción :) el segundo objetivo es un proyecto de castillos de arena para el almuerzo sólo por la noche:)