Cruise Control .NET:使用cb:define和多个参数

4
这个问题非常烦人,我已经花了几个小时来解决它。我的目标是使用CCNet中的配置预处理器创建一个调用CCNet中任务的XML元素。我认为我没有正确理解某些东西。
现在我的做法是这样的:
 <cruisecontrol xmlns:cb="urn:ccnet.config.builder">

         <cb:define name="myBuild">
            <devenv>
                <solutionfile>"$(projPath)"</solutionfile>
                <configuration>"$(releaseMode)"</configuration>
                <buildtype>Rebuild</buildtype>
                <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable>
                <buildTimeoutSeconds>2400</buildTimeoutSeconds>
                <version>VS2008</version>   
            </devenv>
        </cb:define>

然后,要使用它,在项目中执行以下操作:

<cb:myBuild projPath="C:\sample.sln" releaseMode="Release" />

我收到的错误信息是:
[CCNET服务器:ERROR]内部错误:对未知符号“releasemode”的引用
然后是ThoughtWorks dll的大量堆栈跟踪。
我主要困惑的是为什么在定义中的"$(projPath)"能正常工作,而"$(releaseMode)"则不能。事实上,如果我在项目中删除所有对"releaseMode"的引用,CCNet会接受脚本并构建它们。但是由于不是我们所有的解决方案都有“Release”模式,某些解决方案以特定名称命名(不知道原因),因此它无法正常工作。
如果您能告诉我发生了什么,或者更重要的是如何解决这个问题,我将非常感激。
我正在运行1.8.2版本。此外,我们确实计划将实际构建脚本移动到NANT,但这是我们构建流程漫长的第一步。

可能是一次冒险,但如果您为参数使用不同的名称会发生什么?在包含文件中更改它们的顺序呢? - skolima
乍一看一切都很好。我会进行调查... - The Chairman
2
我将你的配置片段复制到正在运行的CCNET服务器(版本1.8.2)的配置中,一切正常,正如预期的那样。因此,问题不在于配置。 - The Chairman
好的,谢谢主席。我非常感激您的努力!我会采纳您的建议,并检查与服务器相关的潜在配置设置,或者其他可能导致此问题的配置文件中未显示的内容。如果所有其他方法都失败了,我可能只能删除CCNet并重新安装它。 - Weaver
1个回答

2
我用你提供的部件构建了一个简单的配置文件,它可以完美地运行:
<cb:define name="myBuild">
  <devenv>
    <solutionfile>"$(projPath)"</solutionfile>
    <configuration>"$(releaseMode)"</configuration>
    <buildtype>Rebuild</buildtype>
    <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable>
    <buildTimeoutSeconds>2400</buildTimeoutSeconds>
    <version>VS2008</version>   
  </devenv>
</cb:define>

<project name="a">
  <tasks>
    <cb:myBuild projPath="C:\sample.sln" releaseMode="Release" />
  </tasks>
</project>

我怀疑错误与服务器上的任何其他配置设置无关。

为了简化故障排除,如果您还没有使用CCValidator.exe,请使用它。这样,您将有更少的潜在问题来源。您可以在CruiseControl.NET\server文件夹中找到它。尝试在其中打开配置文件以查看是否显示任何错误。

如果是,请尝试注释或删除配置的所有部分,使其尽可能小,同时仍能重现该问题。如果您仍然无法解决问题,请将该配置发布供其他人查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接