3

これに関する情報を見つけるのに非常に苦労しています。メイン プロジェクトの 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 はどのようにこの種のことを想定できますか?

4

1 に答える 1

2

LabDefaultTemplate ビルド プロセス テンプレートからアクティビティを削除するだけで機能するようです。

その Assign アクティビティの意味や目的はわかりませんが、それがなくても問題なく動作するようです。

このアクティビティを削除

于 2013-10-15T09:10:36.353 に答える