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

stemmen
15

Ik probeer aan opstelling CruiseControl.net op dit moment. Tot nu toe werkt het leuk, maar ik heb een probleem met de MSBuild Task.

Volgens de documentatie , het passeert CCNetArtifactDirectory om MSBuild. Maar hoe gebruik ik het?

Ik heb geprobeerd dit:

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

Maar dat werkt niet. In feite is het doodt de dienst met deze fout:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Verwijzing naar onbekende symbool CCNetArtifactDirectory

Documentatie is nogal mager, en google und voornamelijk aanbiedingen wijzigen van het .sln Project bestand, dat is wat ik wil vermijden om in staat zijn om dit project later handmatig te bouwen - ik zou echt liever /p:OutputPath.

De vraag is gesteld op 03/08/2008 om 22:25
bron van user
In andere talen...                            


3 antwoorden

stemmen
6

De CCNetArtifactDirectory wordt aan de MSBuild voorbij standaard, zodat je niet hoeft te maken over het. MSBuild zal de ingebouwde uitgang te plaatsen in de "bin locatie" om de werkmap die u hebt opgegeven relevant.

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

Dus in het voorbeeld hierboven uw build output in C zullen worden genomen: \ data \ projects \ FooSolution [Projectnaam] \ bin \ Debug. Mocht u wilt uitvoeren naar een andere locatie die u zou willen kijken naar de tag in CCNET.

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

Dit zal u toelaten om de output naar een andere locatie te publiceren.

antwoordde op 04/08/2008 om 05:45
bron van user

stemmen
5

U kunt het artefact directory variabele te gebruiken in de MSBuild script zelf. Hier is een voorbeeld van de manier waarop ik ben actief FxCop op dit moment uit mijn CC.Net MSBuild script (dit script is wat CC.Net punten - er is ook een "Build" target in het script dat een MSBuild taak tegen de SLN om omvat doe de eigenlijke compilatie):

<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"
/>
antwoordde op 04/08/2008 om 15:40
bron van user

stemmen
2

Parameters willen CCNetArtifactDirectoryworden doorgegeven aan externe programma's met behulp van omgevingsvariabelen. Ze zijn verkrijgbaar in de externe programma, maar ze zijn niet in CCNETde configuratie. Dit leidt vaak tot verwarring.

U kunt een preprocessor constante gebruiken in plaats:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
antwoordde op 26/02/2010 om 18:29
bron van user

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