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

voix
15

Je suis en train de CruiseControl.net de configuration pour le moment. Jusqu'à présent, il fonctionne bien, mais j'ai un problème avec la MSBuild tâche.

Selon la documentation , il passe CCNetArtifactDirectory à MSBuild. Mais comment puis-je utiliser?

J'ai essayé ceci:

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

Mais cela ne fonctionne pas. En fait, il tue le service avec cette erreur:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Référence à symbole inconnu CCNetArtifactDirectory

La documentation est plutôt rare, et Google und principalement offres modifiant le fichier de projet .sln, qui est ce que je veux éviter, afin de pouvoir construire manuellement ce projet plus tard - je préférerais vraiment /p:OutputPath.

Créé 03/08/2008 à 22:25
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
6

Le CCNetArtifactDirectory est transmis au MSBuild par défaut, donc vous ne devez vous en inquiéter. MSBuild placera la sortie de construction dans le correspondant « emplacement bin » dans le répertoire de travail que vous avez spécifié.

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

Ainsi, dans l'exemple ci-dessus votre sortie de construction sera mis dans C: \ data \ projects \ FooSolution [ProjectName] \ bin \ Debug. Si vous souhaitez sortie vers un autre emplacement, vous voudrez peut-être regarder de l'étiquette dans CCNET.

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

Cela vous permettra de publier votre sortie vers un autre emplacement.

Créé 04/08/2008 à 05:45
source utilisateur

voix
5

Vous pouvez utiliser la variable de répertoire d'artefact dans le script MSBuild lui-même. Voici un exemple de la façon dont je suis en ce moment FxCop de mon CC.Net de script MSBuild (ce script est ce CC.NET points - il y a aussi une cible « Build » dans le script qui inclut une tâche MSBuild contre la SLN à faire la compilation proprement dite):

<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"
/>
Créé 04/08/2008 à 15:40
source utilisateur

voix
2

Les paramètres tels que CCNetArtifactDirectorysont transmis à des programmes externes à l' aide des variables d'environnement. Ils sont disponibles dans le programme externe , mais ils ne sont pas dans la CCNETconfiguration. Cela conduit souvent à confusion.

Vous pouvez utiliser une constante de préprocesseur à la place:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Créé 26/02/2010 à 18:29
source utilisateur

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