我正在尝试使用CruiseControl.NET版本1.3.0.2918中的任务而非常直接:
<project name="AppBuilder 1.0 (Debug)">
<workingDirectory>c:\depot\AppBuilder\1.0\</workingDirectory>
<triggers/>
<tasks>
<msbuild/>
</tasks>
</project>
但是,当项目运行时,它在构建日志中失败并显示此信息:
MSBUILD:错误MSB1008:只有一个 项目可以指定。开关:1.0
对于切换语法,请键入“MSBuild /帮助“
当我查看ccnet.log文件时,我发现了这个:
正在启动进程[C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ MSBuild.exe] 目录[c:\ depot \ AppBuilder \ 1.0]带参数[/ nologo“/ p:CCNetArtifactDirectory = C:\ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0(Debug)\ Artifacts; CCNetBuildCondition = ForceBuild; CCNetBuildDate = 2009- 01-22; CCNetBuildTime = 09:25:55; CCNetIntegrationStatus =未知; CCNetLabel = 3; CCNetLastIntegrationStatus =失败; CCNetNumericLabel = 3; CCNetProject = AppBuilder 1.0(调试); CCNetProjectUrl = http://CISERVER01/ccnet;CCNetRequestSource=jstong; CCNetWorkingDirectory = c:\ depot \ AppBuilder \ 1.0 \“”/ l:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll; C:\ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0(Debug)\工件\的msbuild-results.xml“]
我从中推断msbuild是在正确的工作目录中运行的,并且传递给它的命令行是:
/ nologo“/ p:CCNetArtifactDirectory = C:\ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0(Debug)\ Artifacts; CCNetBuildCondition = ForceBuild; CCNetBuildDate = 2009-01-22; CCNetBuildTime = 09:25:55 ; CCNetIntegrationStatus =未知; CCNetLabel = 3; CCNetLastIntegrationStatus =失败; CCNetNumericLabel = 3; CCNetProject = AppBuilder 1.0(调试); CCNetProjectUrl = http://CISERVER01/ccnet;CCNetRequestSource=jstong; CCNetWorkingDirectory = c:\ depot \ AppBuilder \ 1.0 \“”/ l:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll; C:\ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0(Debug)\工件\的msbuild-results.xml“
如果我在命令行手动运行,我会收到类似的错误。
在我看来,没有将正确的命令行传递给MSBuild可执行文件。
你能发现我的错误吗?或者这个版本的CruiseControl.NET(1.3.0.2918)是否与任务有关?
答案 0 :(得分:24)
我想也许是工件目录路径中的空间。 MSBuild确实不喜欢空格,因为它认为它是参数之间的中断。您可以尝试从该路径中删除空间并查看会发生什么吗?
答案 1 :(得分:3)
为什么你的msbuild标签是空的?它应该类似于:
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>C:\dev\ccnet</workingDirectory>
<projectFile>CCNet.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build;Test</targets>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
答案 2 :(得分:1)
没有更多细节,因为您似乎没有指定一个项目/解决方案文件,而MSBuild假设一个。如果你有多个文件,MSBuild可以用作该目录中可能导致你的问题的项目文件.DO你有机会获得MSbuild .proj和.sln文件吗?还是两个解决方案文件?
答案 3 :(得分:0)
我有一个类似的问题,(亚历克斯说)删除我的空间确实解决了问题。然而,我遇到了另一种情况,即无法从名称中删除空格。在这种情况下,在名称周围添加引号可以解决我的问题。