CruiseControl.net,msbuild,/p:OutputPath和CCNetArtifactDirectory
-
08-06-2019 - |
题
我试图安装CruiseControl.net 的时刻。迄今为止它的工作很好,但是我有个问题请参阅任务。
根据 文档, ,它通过CCNetArtifactDirectory到MSBuild。但我怎么使用它?
我试图这样的:
<buildArgs>
/noconsolelogger /p:OutputPath=$(CCNetArtifactDirectory)\test
</buildArgs>
但是,这不起作用。事实上,它杀死的服务与这个错误:
真实的.CruiseControl.核心。Config。预处理器。EvaluationException:参照未知的符号CCNetArtifactDirectory
文件是相当稀少,谷歌und主要提供修改的。sln项目文件,该文件是我想要避免为了能够用手建立这一项目后我会真的喜欢 /p:OutputPath
.
解决方案
该CCNetArtifactDirectory传递给请参阅通过默认,所以你不需要担心它。MSBuild将建立输出的"站的位置"相关的工作目录,你已经指定。
<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>
因此,在上述例子中,你建立输出将被放置在C:\data\projects\FooSolution[项目名称]\bin\调试。你应该想出一个不同的位置你可能想看到的标记在CCNET.
<publishers>
<xmllogger />
<buildpublisher>
<sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
<publishDir>C:\published\FooSolution\</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
</publishers>
这将允许你来发布你输出到一个不同的位置。
其他提示
你可以使用项目目录的变量请参阅脚本本身。这里是一个例子,我是如何运行FxCop现在从我的CC.Net MSBuild脚本(这个脚本是什么CC.Net 点-还有一个"建立"目标的脚本中包括一个MSBuild任务对SLN要做到实际编辑):
<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"
/>
等参数 CCNetArtifactDirectory
传递给外部程序使用环境变量。他们都可以在外部程序,但他们没有内部 CCNET
配置。这往往会导致混乱。
你可以使用一个预处理器常数而不是:
<cb:define project.artifactDirectory="C:\foo">
<project>
<!-- [...] -->
<artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
<!-- [...] -->
<tasks>
<!-- [...] -->
<msbuild>
<!-- [...] -->
<buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
<!-- [...] -->
</msbuild>
<!-- [...] -->
</tasks>
<!-- [...] -->
</project>
不隶属于 StackOverflow