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

votos
15

Estou tentando CruiseControl.net configuração no momento. Até agora ele funciona bom, mas eu tenho um problema com o MSBuild de tarefas.

De acordo com a documentação , ele passa CCNetArtifactDirectory para MSBuild. Mas como posso usá-lo?

Eu tentei isso:

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

Mas isso não funciona. Na verdade, ele mata o serviço com este erro:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Referência ao símbolo desconhecido CCNetArtifactDirectory

A documentação é bastante escassa, e google und principalmente ofertas modificando o arquivo de projeto .sln, que é o que eu quero evitar, a fim de ser capaz de construir manualmente este projeto mais tarde - eu realmente prefiro /p:OutputPath.

Publicado 03/08/2008 em 22:25
fonte usuário
Em outras línguas...                            


3 respostas

votos
6

O CCNetArtifactDirectory é passado para o MSBuild por padrão, então você não precisa se preocupar com isso. MSBuild irá colocar a saída de compilação no "local bin" relevantes para o diretório de trabalho que você especificou.

<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>

Assim, no exemplo acima de sua saída da compilação será colocado em C: \ data \ projetos \ FooSolution [ProjectName] \ bin \ Debug. Se você quer saída para um local diferente, você pode querer olhar para o tag em CCNET.

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

Isto irá permitir que você publique a sua saída para um local diferente.

Respondeu 04/08/2008 em 05:45
fonte usuário

votos
5

Você pode usar a variável de diretório artefato dentro do script MSBuild si. Aqui está um exemplo de como eu estou correndo FxCop agora do meu CC.Net roteiro MSBuild (este script é o que CC.NET pontos para - há também uma "Build" alvo no script que inclui uma tarefa MSBuild contra a SLN para fazer a compilação 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"
/>
Respondeu 04/08/2008 em 15:40
fonte usuário

votos
2

Parâmetros como CCNetArtifactDirectorysão passados para programas externos utilizando variáveis de ambiente. Eles estão disponíveis no programa externo, mas eles não estão dentro CCNETde configuração. Isso muitas vezes leva à confusão.

Você pode usar uma constante pré-processador em vez disso:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Respondeu 26/02/2010 em 18:29
fonte usuário

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