当调用诸如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 路径。)

10-06 10:21