1

TFS 2010 (ビルド サーバー) のビルド タスクに使用しているソリューションがあります。

ほとんどのプロジェクトは同じ場所に配置されても問題ありません。唯一の違いは、いくつかの動的にロードされるプラグインであり、他のアセンブリに関連する /Plugins サブフォルダーに配置する必要があります。

1) DefaultTemplate.xaml を変更するなど、いくつかのことを試しましたが、(.sln ファイルのみを指定したため) プロジェクトごとのレベルで出力パスを区別できないことがわかりました。(ワークフローには、serverBuildProjectItem 変数を使用した「For Each Project in BuildSettings.ProjectsToBuild」があります。これは、プロジェクトとして .sln ファイルを使用して一度だけ呼び出されます。) したがって、これはプロジェクトごとに区別するために機能しません。基本。

ここに画像の説明を入力

2)私が試したもう1つのことは、解決策としてどこかにあるようにOutputPathを指定することでした。

<OutputPath Condition=" '$(CommonOutputPath)'=='' ">../myOutDir/Plugins/</OutputPath>
<OutputPath Condition=" '$(CommonOutputPath)'!='' ">$(CommonOutputPath)Plugins\</OutputPath>

これにより、すべてのアセンブリがサーバー ビルド用の同じフォルダーにも残るため、機能しません。

3) ビルド後のイベントの作成を開始して、ファイルを正しい場所に手動でコピーしましたが、これまでのところ、サーバー ケースとローカル ケースを区別できませんでした。(これはここでは機能しません。)

<PropertyGroup Condition=" ' $(TeamBuildConstants) ' == ' '>
<PostBuildEvent>mkdir $(SolutionDir)..\out\$(OutDir)plugins
copy $(TargetPath) $(SolutionDir)..\out\$(OutDir)plugins
</PropertyGroup>
<PropertyGroup Condition=" ' $(TeamBuildConstants) ' == '_TEAM_BUILD_ '>
echo figure out some copying for this once the condition gets hit..
<PostBuildEvent></PostBuildEvent>
</PropertyGroup>

プロジェクト ファイルを変更するか、ビルド ワークフローを構成してこれを機能させるにはどうすればよいですか? (その後、ローカルでもサーバー ビルドでも動作するはずです。)

私が欲しいもの: すべての標準アセンブリを同じフォルダーに入れ、すべてのプラグイン プロジェクトを ./Plugins/ サブフォルダーに入れますか? (ローカルで、プロジェクト ファイルを基準にして (デフォルト?)、指定されたドロップ場所を基準にして tfs-build を作成)

4

1 に答える 1

1

2010 年以降、ワークフロー ベースの tfs ビルドの導入により、プロジェクトとそのコンテンツを msbuild でコンパイルし、デプロイ パッケージをワークフローでアセンブルするという、msbuild との間に強い違いがあります。

これはローカルで実行する必要があると述べているため、コンパイルが成功する/プロジェクトが機能するにはプラグインが必要であるため、ソリューションレベルで処理する必要があります。

使用できるいくつかのアプローチがあります

  • 各プロジェクトのビルドイベントを投稿します-おそらく2セットのアクションを提供します.1つはローカルビルド用、もう1つはtfs上のものです-アプローチ3、使用できるモードを区別します(どのように、どこでそれを行うことができるかのバリエーションがあります。これには利点がありますプロジェクトのプロパティから編集可能)

tfs でビルドする (VS の外部)

<PostBuildEvent> IF NOT "$(BuildingInsideVisualStudio)" == "true" ( YourActions ) </PostBuildEvent>

それについての議論: BuildingInsideVisualStudio プロパティ値がファイル参照とプロジェクト参照条件付きで機能しない

  • 各プロジェクトのソース管理の相対的な中央の場所からプラグイン フォルダーに項目としてプラグイン ファイルをリンクとして追加または追加し、項目のビルド アクションをおそらく copyifnewer/always content として定義します。
于 2013-02-27T15:55:54.823 に答える