CruiseControl.net, MSBuild, / p: OutputPath og CCNetArtifactDirectory

stemmer
15

Jeg prøver å sette opp CruiseControl.net i øyeblikket. Så langt fungerer det fint, men jeg har et problem med MSBuild oppgave.

Ifølge dokumentasjonen , går det CCNetArtifactDirectory å MSBuild. Men hvordan bruker jeg det?

Jeg prøvde dette:

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

Men det virker ikke. Faktisk dreper den tjenesten med denne feilmeldingen:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Referanse til ukjent symbol CCNetArtifactDirectory

Dokumentasjon er ganske sparsom, og google und hovedsakelig tilbud modifiserer .sln Project-fil, som er det jeg ønsker å unngå for å kunne bygge dette prosjektet manuelt senere - jeg ville egentlig foretrekker /p:OutputPath.

Publisert på 03/08/2008 klokken 21:25
kilden bruker
På andre språk...                            


3 svar

stemmer
6

Den CCNetArtifactDirectory sendes til MSBuild som standard, slik at du ikke trenger å bekymre deg for det. MSBuild vil plassere bygge utgang i "bin location" relevant for arbeidsmappen som du har angitt.

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

Så i eksemplet ovenfor din bygge produksjonen vil bli satt i C: \ data \ prosjekter \ FooSolution [prosjektnavn] \ bin \ Debug. Dersom du ønsker å sende ut til et annet sted kan det være lurt å se på av koden i CCNET.

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

Dette vil tillate deg å publisere din utgang til et annet sted.

Svarte 04/08/2008 kl. 04:45
kilden bruker

stemmer
5

Du kan bruke gjenstanden katalogen variabel inne i MSBuild manuset selv. Her er et eksempel på hvordan jeg kjører FxCop akkurat nå fra min CC.Net MSBuild script (dette skriptet er hva CC.Net poeng til - det er også en "Build" target i skriptet som inkluderer en MSBuild oppgave mot SLN til gjøre selve kompilering):

<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"
/>
Svarte 04/08/2008 kl. 14:40
kilden bruker

stemmer
2

Parametere som CCNetArtifactDirectorysendes til eksterne programmer ved hjelp av miljøvariabler. De er tilgjengelige i det eksterne programmet, men de er ikke inne CCNETkonfigurasjon. Dette fører ofte til forvirring.

Du kan bruke en preprosessor konstant i stedet:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Svarte 26/02/2010 kl. 17:29
kilden bruker

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