这个问题非常烦人,我现在已经抨击了几个小时。我想要做的是使用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服务器:错误]内部错误:引用未知符号&#39; releasemode&#39;
然后是ThoughtWorks的一大堆痕迹。
我的主要困惑在于为什么&#34; $(projPath)&#34;在定义工作正常,但&#34; $(releaseMode)&#34;才不是。实际上,如果我删除对&#34; releaseMode&#34;的所有引用。在项目中,CCNet接受脚本甚至构建它们。但是,它并不起作用,因为并非所有解决方案都有&#34;发布&#34;模式,有些是特别命名的(出于某种原因,不要问我)。
对于正在发生的事情提供任何帮助,或者更重要的是,如何解决这个问题将不胜感激。
我正在运行1.8.2版本。此外,我们确实计划将实际的构建脚本移动到NANT,但这是我们构建过程的漫长道路上的第一步。
答案 0 :(得分: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
文件夹中找到它。尝试在其中打开配置文件,看它是否显示任何错误。
如果是,请尝试注释掉或删除配置的所有部分,使其尽可能小,同时仍然可以重现问题。如果您仍然无法解决问题,请将该配置发布给其他人进行查看。