CruiseControl.net, msbuild, / p: OutputPath y CCNetArtifactDirectory

votos
15

Estoy intentando configurar CruiseControl.net por el momento. Hasta ahora funciona bien, pero tengo un problema con la tarea MSBuild.

De acuerdo con la Documentación , pasa CCNetArtifactDirectory a MSBuild. ¿Pero cómo lo uso?

Intenté esto:

<buildArgs>
   /noconsolelogger /p:OutputPath=$(CCNetArtifactDirectory)\test
</buildArgs>

Pero eso no funciona. De hecho, mata el servicio con este error:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: referencia al símbolo desconocido CCNetArtifactDirectory

La documentación es bastante escasa, y Google y principalmente ofrece la modificación del archivo de proyecto .sln, que es lo que quiero evitar para poder construir este proyecto más adelante de forma manual, realmente lo preferiría /p:OutputPath.

Publicado el 03/08/2008 a las 22:25
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
6

El CCNetArtifactDirectory se pasa a MSBuild de forma predeterminada, por lo que no debe preocuparse por ello. MSBuild colocará la salida de compilación en la "ubicación del contenedor" relevante para el directorio de trabajo que usted ha especificado.

<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug </buildArgs>

Por lo tanto, en el ejemplo anterior, su salida de compilación se colocará en C: \ data \ projects \ FooSolution [ProjectName] \ bin \ Debug. Si desea exportar a una ubicación diferente, puede consultar la etiqueta en CCNET.

<publishers>
  <xmllogger />
  <buildpublisher>
    <sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
    <publishDir>C:\published\FooSolution\</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
  </buildpublisher>
</publishers>

Esto le permitirá publicar su salida en una ubicación diferente.

Respondida el 04/08/2008 a las 05:45
fuente por usuario

votos
5

Puede usar la variable del directorio de artefactos dentro del script MSBuild. Aquí hay un ejemplo de cómo estoy ejecutando FxCop en este momento desde mi script CC.Net MSBuild (este script es a lo que apunta CC.Net; también hay un objetivo "Build" en el script que incluye una tarea MSBuild contra el SLN). hacer la compilación real):

<Exec
  Command='FxCopCmd.exe /project:"$(MSBuildProjectDirectory)\FXCopRules.FxCop" /out:"$(CCNetArtifactDirectory)\ProjectName.FxCop.xml"'
  WorkingDirectory="C:\Program Files\Microsoft FxCop 1.35"
  ContinueOnError="true"
  IgnoreExitCode="true"
/>
Respondida el 04/08/2008 a las 15:40
fuente por usuario

votos
2

Parámetros como CCNetArtifactDirectoryse pasan a programas externos utilizando variables de entorno. Están disponibles en el programa externo pero no se encuentran dentro de CCNETla configuración. Esto a menudo conduce a la confusión.

Se puede utilizar una constante de preprocesador en su lugar:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Respondida el 26/02/2010 a las 18:29
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more