これに関する情報を見つけるのに非常に苦労しています。メイン プロジェクトの 1 つのBuild-Deploy-Testビルド定義を作成しましたが、ワークフローが実行されると、"$(BuildLocation)" マクロに間違った値が報告され、デプロイ フェーズ以降のすべてが中断されます (テストもこの間違ったパスで実行しようとします)。
問題の原因はわかっていますが、それを修正する方法がわかりません。ラボ 1 をリダイレクトするビルド定義は、ソリューションの「リリース」構成をビルドするように構成されています。ドロップフォルダーは「\outputServer\drops」です。BuildLocation マクロが を返すことを期待していまし"\\outputServer\drops\<BuildName>\<BuildNameFormat>"
たが、代わりにマクロが返されてい"\\outputServer\drops\<BuildName>\<BuildNameFormat>\Release"
ます。
私は当初、これはテンプレート (私が使用しようとしているもの) とカスタム テンプレートのベースLabDefaultTemplate.11.xaml
となった古い の間の非互換性であると考えていました。DefaultTemplate.xaml
カスタム テンプレートを更新して、新しいデフォルト ( DefaultTemplate.11.1.xaml
) をベースとして使用しようとしましたが、テンプレートを変換した後も問題が解決しません。
のコードを見た後でも、DefaultTemplate.11.1
構成名で出力をフィルター処理していることはまだわかりません。そこでの唯一の処理は、ソリューションまたはプロジェクト名に基づいており、デフォルトでは無効になっています (ビルド定義構成の [詳細] カテゴリの [ソリューション固有のビルド出力] オプションによって制御されます)。
ドロップされた出力がこのフォルダーにまったく配置されていないのに、ドロップフォルダーが「リリース」で終わると想定しているのはなぜですか? このように、パスに「..」を追加することで、展開スクリプトを正常に実行することができました$(BuildLocation)\..\myScript
が、ワークフローが自動テストを実行しようとすると、この同じマクロを使用しているように見え、明らかにテスト dll が見つかりません。 .
定義オプションの 'Items to Build' 要素でビルド構成を指定しないこと (したがって、デフォルトのものを選択させること) によってこれを回避することは可能ですが、構成を指定することは私たちの意識的な決定でした。プロジェクトがリリース モードでビルドされると、ファイルと一部の構成が異なる方法で変換されます。
私は現在、VS2012 Update 3/TFS 2012 Update 2 を使用しています。
アップデート:
テンプレート自体の中でこれを行っている場所を見つけました。ここでは、ラボのワークフローが非常にシンプルであるという事実が役立ちました。
「if ステートメント」内に、Compute build location needed
この奇妙な連結を行っているように見える代入があります。コードは次のとおりです。
If(LabWorkflowParameters.BuildDetails.Configuration Is Nothing, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsEmpty Or (SelectedBuildDetail.Information.GetNodesByType(Microsoft.TeamFoundation.Build.Common.InformationTypes.ConfigurationSummary, True)).Count = 1, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsPlatformEmptyOrAnyCpu, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Platform + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration)))
これが何を意味するのかさえわかりません。ビルド テンプレート自体 (ラボのものではない) はこの連結を行わないため、この動作はバグのようです。LabTemplate はどのようにこの種のことを想定できますか?