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

głosy
15

Próbuję konfiguracji CruiseControl.NET w tej chwili. Do tej pory to działa ładnie, ale mam problem z MSBuild zadania.

Zgodnie z dokumentacją , przechodzi CCNetArtifactDirectory do MSBuild. Ale jak go używać?

Próbowałem to:

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

Ale to nie działa. W rzeczywistości, to zabija usługi tego błędu:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: odniesienie do nieznanego symbolem CCNetArtifactDirectory

Dokumentacja jest raczej rzadki, a Google und głównie oferty modyfikujące .sln plik projektu, który jest to, co chcę uniknąć, aby móc ręcznie zbudować ten projekt później - ja naprawdę wolę /p:OutputPath.

Utwórz 03/08/2008 o 22:25
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
6

CCNetArtifactDirectory jest przekazywany do MSBuild domyślnie, więc nie musisz się o to martwić. MSBuild umieści wyjście budować w miejscu „bin” właściwego do katalogu roboczego, które zostały podane.

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

Tak więc w powyższym przykładzie Twój wyjście kompilacji zostaną umieszczone w katalogu C: \ data \ Projects \ FooSolution [NazwaProjektu] \ bin \ Debug. Jeżeli chcesz wstawić do innej lokalizacji można zajrzeć do znacznika w CCNET.

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

Pozwoli to, aby opublikować swoje wyjście do innej lokalizacji.

Odpowiedział 04/08/2008 o 05:45
źródło użytkownik

głosy
5

Można użyć zmiennej katalogów artefakt wewnątrz skryptu MSBuild samego. Oto przykład, jak biegnę FxCop teraz z moim CC.NET MSBuild Script (Skrypt ten jest co CC.NET punkty - istnieje również „Build” target w skrypcie, który zawiera zadanie MSBuild przeciwko SLN do zrobić rzeczywisty kompilację):

<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"
/>
Odpowiedział 04/08/2008 o 15:40
źródło użytkownik

głosy
2

Parametry jak CCNetArtifactDirectorysą przekazywane do zewnętrznych programów wykorzystujących zmienne środowiskowe. Są one dostępne w programie zewnętrznym ale nie są one wewnątrz CCNETkonfiguracja. Prowadzi to często do nieporozumień.

Można użyć stałej preprocesora zamiast:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Odpowiedział 26/02/2010 o 18:29
źródło użytkownik

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