当调用诸如MSBuild的外部进程时,巡航控制会设置环境变量。值之一是CCNetLabel。它保留当前项目标签的值。我想在ccnet config本身中使用相同的值,但是当我尝试ccnet config时出现问题。我收到以下错误:
[CCNet Server:ERROR] INTERNAL ERROR: Reference to unknown symbol CCNetLabel
----------
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Reference to unknown symbol CCNetLabel
at ThoughtWorks.CruiseControl.Core.Config.Preprocessor.ConfigPreprocessorEnvironment._GetConstantDef(String name)
at ThoughtWorks.CruiseControl.Core.Config.Preprocessor.ConfigPreprocessorEnvironment.eval_text_constant(String name)
.....
----------
我实际上想将CCNetLabel附加到另一个变量,因此我需要访问ccnet.config中的属性。
有没有其他方法可以引用这些变量?
最佳答案
我们也需要这样做,并且发现我们可以使用CruiseControl.NET 1.5中引入的Replacement Dynamic Values从ccnet.config中访问CCNetLabel 。
例如,此代码段中的 dynamicValues 块: <buildpublisher>
<sourceDir>C:\ccnet_projects\Installer\bin\x86\Release</sourceDir>
<dynamicValues>
<replacementValue property="publishDir">
<format>C:\builds\installers\{0}\x86</format>
<parameters>
<namedValue name="$CCNetLabel" value="Default" />
</parameters>
</replacementValue>
</dynamicValues>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
动态生成一个 publishDir 路径,该路径包含CCNetLabel 值:
<buildpublisher>
<sourceDir>C:\ccnet_projects\Installer\bin\x86\Release</sourceDir>
<publishDir>C:\builds\installers\1.0.2.120\x86</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
(请注意,对于此特定示例, useLabelSubDirectory 设置为false,以避免将 CCNetLabel 附加到 publishDir 路径。)