I'm trying to use the task in CruiseControl.NET version 1.3.0.2918 with a rather straight forward :
<project name="AppBuilder 1.0 (Debug)">
<workingDirectory>c:\depot\AppBuilder\1.0\</workingDirectory>
<triggers/>
<tasks>
<msbuild/>
</tasks>
</project>
However, when the project is run it fails with this information in the build log:
MSBUILD : error MSB1008: Only one project can be specified. Switch: 1.0
For switch syntax, type "MSBuild /help"
When I look at the ccnet.log file I find this:
Starting process [C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe] in working directory [c:\depot\AppBuilder\1.0] with arguments [/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=Unknown;CCNetLabel=3; CCNetLastIntegrationStatus=Failure;CCNetNumericLabel=3;CCNetProject=AppBuilder 1.0 (Debug);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"]
from which I infer that msbuild was run in the correct working directory and that the command line passed to it was:
/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=Unknown;CCNetLabel=3; CCNetLastIntegrationStatus=Failure;CCNetNumericLabel=3;CCNetProject=AppBuilder 1.0 (Debug);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"
If I run this manually at the command line I get a similiar error.
It appears to me that the isn't passing the correct command line to the MSBuild executable.
Can you spot my error? Or is this version of CruiseControl.NET (1.3.0.2918) broken with respect to the task?
Without more detail since you don't appear to be specifying a project/solution file which leaves MSBuild assuming one. If you have more than one file that MSBuild is able to use as a project file in that directory that might be causing your issue.DO you have an MSbuild .proj and a .sln file by any chance? Or two solution files?
Why is your msbuild tag empty? It should be something similar to:
<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>
I had a similar problem and (what Alex said) removing my space did fix the problem. I did however run into another situation where removing the space from a name was not possible. In this case, adding quotes around the name fixed the problem for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With