我是第一次配置CruiseControl.net服务器。我的团队已经使用了NAnt构建脚本,因此我们只是将服务器指向脚本并让NAnt完成所有工作。
正如您所看到的,它非常简单:
<project name="ChannelIP">
<tasks>
<nant>
<executable>C:\Program Files\nant-0.86-beta1\bin\nant.exe</executable>
<baseDirectory>D:\mypath</baseDirectory>
<buildFile>D:\mypath\myNAnt.build</buildFile>
<targetList>
<target>build</target>
</targetList>
</nant>
</tasks>
</project>
问题是当我在CC下运行时,我收到以下错误:
实际上,我确实使用$ {framework :: get-framework-directory('net-3.5')}变量来获取msbuild.exe的路径;但是,这段代码以前从未失败过。我甚至可以使用CC运行的用户帐户进入服务器并直接运行NAnt构建文件,它运行正常。功能调用失败。 表达: $ {框架::获得的框架的目录( '净-3.5')} / msbuild.exe
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Microsoft .NET Framework 3.5(net-3.5) 未安装或未正确安装 配置。未设置对象引用 到一个对象的实例。
为什么这个原本很好的文件只在CC运行时才会失败。
请注意 -CC正在我通常从
运行构建脚本的同一台机器上运行答案 0 :(得分:2)
CC服务可能没有在具有适当权限的帐户下运行。您是否尝试使用命令行运行CC(将以登录用户身份运行)以查看是否存在相同的问题?
答案 1 :(得分:1)
这听起来像是一个NAnt问题,它和.NET 3.5存在一些问题。您使用的是哪个版本的NAnt?
另外,你见过Using 0.86 beta 1 for .NET 3.5吗?该家伙有NAnt抛出的相同错误消息。建议的解决方案是使用最新的每晚构建。