信息
我正在运行一个 GIT 项目并使用最新版本的 Cruise Control (1.8) 运行 MSBuild 任务。
错误
错误消息与其他问题类似,但原因不同。
MSBUILD : error MSB1008: Only one project can be specified
原因
出现问题是因为历史上的一位作者的名字中有双引号。例如,Givename “引用的昵称”姓氏。
历史
发生这种情况的原因是 CC.Net 的 GIT 提供程序发生了变化
最初,提供者最初会获取存储库并构建它,而不提供整个历史的所有作者信息。新的提供者现在提供了整个项目在其第一次构建时的历史记录。
诊断
因此,这是尝试运行构建任务时日志的完整输出。(我已将单行拆分为多行以使其更易于阅读)参数的第二行(第 5 行)是问题行。
Starting process [C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe]
in working directory [c:\Builds\Build\project_master]
with arguments [
/nologo /t:Build
/p:CCNetArtifactDirectory=c:\Builds\Artifacts\project_master;CCNetBuildCondition=ForceBuild;CCNetBuildDate=2012-09-10;CCNetBuildId=e954ce9462d14bbc99110a0b43f9e4e2;CCNetBuildTime=12:54:23;CCNetFailureTasks=;CCNetFailureUsers="Matthew Vukomanovic,Givename "Quoted Nickname" Surname";CCNetIntegrationStatus=Unknown;CCNetLabel=1;CCNetLastIntegrationStatus=Failure;CCNetListenerFile=c:\Builds\Artifacts\project_master\project_master_ListenFile.xml;CCNetModifyingUsers=;CCNetNumericLabel=1;CCNetProject=project_master;CCNetProjectUrl=http://buildserver.domain/ccnet/server/local/project/project_master/ViewLatestBuildReport.aspx;CCNetRequestSource=buildserver;CCNetUser=;CCNetWorkingDirectory=c:\Builds\Build\project_master
/v:quiet /p:Configuration=Release /p:debug=pdbonly project.sln
/l:"C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll";c:\Builds\Artifacts\project_master\msbuild-results-5d764e9e-a8cb-4591-a531-71809edbe2a0.xml
]
目前的工作
我所做的当前工作是创建项目让它运行和失败。然后停止巡航控制,手动修改项目的状态文件以不包含问题作者姓名。所以我从这个修改XML
<FailureUsers>
<anyType xsi:type="xsd:string">Matthew Vukomanovic</anyType>
<anyType xsi:type="xsd:string">Givename "Quoted Nickname" Surname</anyType>
</FailureUsers>
对此
<FailureUsers>
<anyType xsi:type="xsd:string">Matthew Vukomanovic</anyType>
<anyType xsi:type="xsd:string">Givename Surname</anyType>
</FailureUsers>
但是,我们可以更改存储库的作者: * 提交是很久以前的,因此必须修改的活动分支和标签的数量也是一项大任务;和 * 在一个公共项目中,你可能会得到某人出于某种原因在他们的名字中使用双引号。
一个修复
理想情况下,应该正确引用集成属性,我将在 Cruise Control 项目中提出一个问题,但这可能需要一段时间。
永久工作
与此同时,我想做的是停止将 msbuild 任务发送到 CCNetFailedUsers 和 CCNetModifyingUsers,或者阻止整个集成属性。有谁知道这是怎么做到的吗?(我无法在任何地方找到如何做到这一点)。或者有没有人有我上面没有提到的任何建议?
编辑我发现有人遇到同样的问题,但是自 2010 年提出以来似乎没有任何修复措施https://groups.google.com/forum/#!topic/ccnet-user /HBabRAq-tsw/讨论
EDIT2 我已经提交了一个拉取请求来修复我为此所做的修复,可以在我的 CruiseControl.NET 的 github 分支的主分支上找到。更具体地说,提交https://github.com/matthewvukomanovic/CruiseControl.NET/commit/3b3ca4a1b81c02de9948ff83ad33536443b208da和之前的两个提交。我希望它将被放入下一个版本的 Cruise Control Net 中。