这个问题很烦人,我已经反对它几个小时了。我正在尝试做的是使用 CCNet 中的配置预处理器来创建一个 XML 元素,该元素调用 CCNet 中的任务。我想我从根本上误解了一些东西。
我现在拥有的是这样的:
<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 服务器:错误] 内部错误:引用未知符号 'releasemode'
然后是 ThoughtWorks dll 的巨大堆栈跟踪。
我的主要困惑在于为什么定义中的“$(projPath)”可以正常工作,但“$(releaseMode)”却不行。事实上,如果我删除项目中对“releaseMode”的所有引用,CCNet 会接受脚本,甚至构建它们。但是,它不起作用,因为并非我们所有的解决方案都具有“发布”模式,有些是专门命名的(出于某种原因,不要问我)。
任何关于正在发生的事情的帮助,或者更重要的是,如何解决这个问题将不胜感激。
我正在运行 1.8.2 版。此外,我们确实计划将实际构建脚本移至 NANT,但这是我们构建过程漫长道路上的第一步。