情報
私は GIT プロジェクトを実行しており、最新バージョンの Cruise Control (1.8) を使用して MSBuild タスクを実行しています。
エラー
エラー メッセージは他の質問と似ていますが、原因は異なります。
MSBUILD : error MSB1008: Only one project can be specified
原因
この問題は、履歴の著者の 1 人の名前に二重引用符が含まれているために発生します。例: ギブネーム "引用されたニックネーム" 姓。
歴史
これが発生した理由は、CC.Net の GIT プロバイダーへの変更です。
当初、プロバイダは最初にリポジトリを取得してビルドし、履歴全体のすべての作成者情報を提供しませんでした。新しいプロバイダーは、最初のビルドでプロジェクト全体の履歴を提供するようになりました。
診断
したがって、これはビルド タスクを実行しようとしたときのログからの完全な出力です。(読みやすくするために一行を複数に分割しています) 引数の2行目(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とその前の 2 つのコミットです。Cruise Control Net の次のリリースに組み込まれることを期待しています。