6

我正在尝试使用 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 /help”

当我查看 ccnet.log 文件时,我发现:

使用参数 [/nologo "/p:CCNetArtifactDirectory=C:\Program 在工作目录 [c:\depot\AppBuilder\1.0] 中启动进程 [C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe] Files\CruiseControl.NET\server\AppBuilder 1.0(调试)\Artifacts;CCNetBuildCondition=ForceBuild;CCNetBuildDate=2009-01-22;CCNetBuildTime=09:25:55;CCNetIntegrationStatus=Unknown;CCNetLabel=3;CCNetLastIntegrationStatus=Failure;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)\Artifacts\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=Failure;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)\Artifacts\msbuild-results.xml"

如果我在命令行手动运行它,我会得到一个类似的错误。

在我看来,没有将正确的命令行传递给 MSBuild 可执行文件。

你能发现我的错误吗?或者这个版本的 CruiseControl.NET (1.3.0.2918) 是否与任务有关?

4

4 回答 4

26

我想这可能是你在工件目录路径中的空间。MSBuild 真的不喜欢空格,因为它认为它是参数之间的中断。您可以尝试从该路径中删除空间,看看会发生什么?

于 2009-01-22T20:22:53.313 回答
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>
于 2009-01-22T14:34:04.360 回答
1

没有更多细节,因为您似乎没有指定一个项目/解决方案文件,这让 MSBuild 假设一个。如果您在该目录中有多个 MSBuild 能够用作项目文件的文件,这可能会导致您的问题。您是否有一个 MSbuild .proj 和一个 .sln 文件?还是两个解决方案文件?

于 2009-01-22T19:07:58.800 回答
1

我有一个类似的问题,(亚历克斯所说)删除我的空间确实解决了这个问题。然而,我确实遇到了另一种情况,即无法从名称中删除空格。在这种情况下,在名称周围添加引号解决了我的问题。

于 2013-10-16T18:23:48.673 回答