CruiseControl.net, MSBuild, / p: OutputPath și CCNetArtifactDirectory

voturi
15

Am încercat să setup CruiseControl.net în acest moment. Până în prezent, funcționează frumos, dar am o problemă cu MSBuild de sarcini.

Conform Documentației , trece CCNetArtifactDirectory la MSBuild. Dar cum o folosesc?

Am încercat acest lucru:

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

Dar asta nu funcționează. De fapt, ea ucide serviciul cu această eroare:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Trimitere la simbol necunoscut CCNetArtifactDirectory

Documentația este destul de rare, iar Google und în principal oferte modificarea fișierului de proiect .sln, care este ceea ce vreau , pentru a evita, pentru a putea construi manual acest proiect mai târziu - Aș prefera cu adevărat /p:OutputPath.

Întrebat 03/08/2008 la 22:25
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
6

CCNetArtifactDirectory este trecut la MSBuild în mod implicit, deci tu dont nevoie să vă faceți griji despre asta. MSBuild va plasa de ieșire construi în „bin locația“ relevant pentru directorul de lucru pe care le-ați specificat.

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

Deci, în exemplul de mai sus de ieșire dvs. construi va fi pus în C: \ date \ proiecte \ FooSolution [ProjectName] \ bin \ Debug. În cazul în care doriți să ieșire într-o altă locație poate doriți să se uite la a eticheta din CCNET.

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

Acest lucru vă va permite să publicați ieșire într-o altă locație.

Publicat 04/08/2008 la 05:45
sursa de către utilizator

voturi
5

Puteți utiliza variabila directorul artefact în interiorul script-ul MSBuild în sine. Iată un exemplu despre cum Fug FxCop chiar acum de la CC.Net meu script-ul MSBuild (acest scenariu este ceea ce CC.Net de puncte pentru a - există, de asemenea, un „Build“ țintă în script-ul care include o sarcină MSBuild împotriva SLN la face compilarea efectivă):

<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"
/>
Publicat 04/08/2008 la 15:40
sursa de către utilizator

voturi
2

Parametrii ca CCNetArtifactDirectorysunt transmise programe externe folosind variabile de mediu. Acestea sunt disponibile în programul extern , dar acestea nu sunt în interiorul CCNETconfigurare. Acest lucru duce adesea la confuzii.

Puteți utiliza o constantă preprocesor în schimb:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Publicat 26/02/2010 la 18:29
sursa de către utilizator

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