ワークスペースに作業フォルダーが 1 つしかないプロジェクトでは、私のビルド スクリプトはうまく機能します。2 つの作業フォルダーを必要とする新しいプロジェクトで作業しているため、以前のスクリプトのすべてのチェックアウトおよびチェックイン コマンドが失敗し、ファイルが見つかりません。
明らかに、私はここでワークスペースの実装の重要な部分を理解していません...私は他のプロジェクトに依存しているプロジェクトを持っています.2番目の作業フォルダーは基本的に、さまざまな公開されたDLLとヘッダーへの参照を持つサードパーティのフォルダーです.私のプロジェクトをコンパイルするために必要なファイル。2 つのアクティブなフォルダーがあり、ローカル フォルダーは次のとおりです。
$(SourceDir)\TEAM-MAIN\Address Finalizer $(SourceDir)\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd Party
ビルドされたコードは正常に動作しますが、次のエントリでカスタム AfterGet が失敗します。
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(MSBuildProjectDirectory)\..\sources"
ContinueOnError="false"/>
単一の作業フォルダーがあり、ソースを必要なすべてのファイルを取得するのに十分な高さに移動した場合、プロジェクトはもちろん機能しますが、43 の他のプロジェクトをトロールしてやりたいことをしたくありません。それらのアセンブリ ファイル...
私も試しました:
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(SolutionRoot)"
ContinueOnError="false"/>
同じ問題、アセンブリ ファイルが見つかりません...ビルド ログを確認したところ、ビルド フェーズ中にアセンブリ ファイルがチェックアウトされていることがわかります...
タスク「取得」 TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1430" Force=True Overwrite=False PopulateOutput=False Preview=False Recursive=True Version="C7564" ワークスペースを取得します="SBN01P-TFS03_61" <中略> C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\Address Finalizer\Address Finalizer\Properties\AssemblyInfo.cs;C7525 を取得しています。
複数の作業フォルダーがどのように機能するかをよりよく説明するために、誰かが何かアイデアを持っているか、いくつかの記事を教えてくれれば幸いです。
一部のビルド変数の値:
MSBuildProjectDirectory: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType SolutionRoot: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources
詳細情報を提供するために、次のコマンドを追加しました。
<!-- 作業フォルダを報告 --> <実行 Command='$(TfCommand) ワークフォールド' WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"/>
結果は次のとおりです。
タスク「実行」 指示: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe" ワークフォールド ================================================== ============================= ワークスペース: SBN01P-TFS03_61 (tfsservice) サーバー : http://pgpd-team01:8080/ $/InfoTurn/TEAM-MAIN/Address Finalizer: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\Address Finalizer $/InfoTurn/TEAM-MAIN/HH-CAHPS Project/MAINLINE/サードパーティ: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rdパーティ
次の作業ディレクトリが機能することがわかりました。
WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"
ただし、次の 2 つはそうではありません。2 番目は私の 2 番目の作業フォルダーであることに注意してください。
WorkingDirectory="$(SolutionRoot)" WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd Party"
ラベル タスクで発生するエラーが最も役立ちます。
アセンブリ "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.Tasks.VersionControl.dll" から "Label" タスクを使用します。 タスク「ラベル」 Label TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1507" Name="Address Finalizer 2.0.1 Build 039" Recursive=True Comments="Automated build: Address Finalizer 2.0.1 Build 039" Version="W" Child="replace" Files="C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources" C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(310,5,310,5): エラー: エラー: ワークスペースを特定できません。
役に立たないチェックアウトからの実際のエラーは次のとおりです。
タスク「実行」 指示: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe" チェックアウト AssemblyInfo.cs /recursive ワークスペースの C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\AssemblyInfo.cs に一致するアイテムが見つかりません。 C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(280,5): エラー MSB3073: コマンド ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE \PrivateAssemblies\..\tf.exe" checkout AssemblyInfo.cs /recursive" はコード 1 で終了しました。