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

hlasů
15

Snažím se nastavení CruiseControl.net v tuto chvíli. Zatím to funguje hezký, ale mám problém s úkolem MSBuild.

Podle dokumentace , přechází CCNetArtifactDirectory na MSBuild. Ale jak mohu použít?

Zkoušel jsem to:

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

Ale to nefunguje. Ve skutečnosti je to zabije službu s touto chybou:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Odkaz na neznámého symbolu CCNetArtifactDirectory

Dokumentace je poměrně řídká a google und především nabídek modifikující .sln soubor aplikace Project, což je to, co chci, aby se zabránilo, aby bylo možné ručně vytvořit tento projekt později - já bych opravdu raději /p:OutputPath.

Položena 03/08/2008 v 22:25
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
6

CCNetArtifactDirectory je předán MSBuild výchozím nastavení, takže si dont muset starat o to. MSBuild umístí sestavení výstup v „bin umístění“ relevantní pro pracovní adresář, který jste zadali.

<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že ve výše uvedeném příkladu bude vaše sestavení výstup uvést do složky C: \ Data \ projekty \ FooSolution [ProjectName] \ bin \ Debug. Pokud byste chtěli, aby výstup do jiného umístění možná budete chtít podívat na tagu v CCNET.

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

To vám umožní publikovat výstup do jiného umístění.

Odpovězeno 04/08/2008 v 05:45
zdroj uživatelem

hlasů
5

Můžete použít proměnnou artefakt adresáře uvnitř MSBuild skriptu samotného. Zde je příklad toho, jak běžím FxCop hned od mého CC.Net MSBuild skriptu (tento scénář je to, co CC.Net body - tam je také „Sestavit“ target ve skriptu, který obsahuje úkol MSBuild proti SLN na dělat skutečné kompilace):

<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"
/>
Odpovězeno 04/08/2008 v 15:40
zdroj uživatelem

hlasů
2

Parametry rádi CCNetArtifactDirectoryjsou předávány externí programy pomocí proměnných prostředí. Jsou k dispozici v externím programu, ale nejsou v CCNETkonfiguraci. To často vede ke zmatku.

Můžete použít preprocesoru konstanta namísto:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Odpovězeno 26/02/2010 v 18:29
zdroj uživatelem

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