1

私は、xml ファイルを読み取り、内容を 1 つの xml ファイルに結合してビルドの出力ディレクトリに書き出すカスタム ビルド タスクを作成する作業を行ってきました。これを取得するには ${OutputPath) を使用します。

ビルド タスクは、ローカルでビルドすると正常に動作し、xml ファイルは期待どおりに表示されます。

ただし、新しいソリューションを追加したため、メインの TFS ビルド プロジェクトに必要な特定のカスタム タスクでオーバーライドされた AfterCompile ターゲットを含む csproj ファイル (AfterBuild も試しました)。カスタム タスクが例外をスローしているため、TFS ビルドは失敗します。

「QBBuildTask」タスクが予期せず失敗しました。System.IO.DirectoryNotFoundException: パス 'C:*このソリューションの TFS ビルド出力へのパス*\86\Release\QueryBuilder.xml' の一部が見つかりませんでした。

** は、SO のエラーのサイズを小さくするために追加したものです。

タスクが書き込もうとすると、リリース フォルダーが存在しないようです。

私の質問は、存在しない場合にディレクトリを作成するタスクを取得する必要がありますか、それとも TFSBuild に間違った出力パス変数を使用していますか?

ビルドを試みる前に出力フォルダーを削除しても、ローカルで正しく動作するのは少し奇妙に思えます。

アイデアはありますか?

マーロン

4

1 に答える 1

0

TFSBuild を使用すると OutputPath が正しくないことが判明したため、xml がランダムな場所に配置され、正しい TFSBuild プロパティ 'TeamBuildOutDir' を使用して条件付きプロパティを使用するようになりました。

<PropertyGroup>
  <OutputPathCond Condition=" '$(TeamBuildOutDir)'=='' ">$(OutputPath)</OutputPathCond>
  <OutputPathCond Condition=" '$(TeamBuildOutDir)'!='' ">$(TeamBuildOutDir)</OutputPathCond>
</PropertyGroup>

これは、ローカルでもサーバーでも機能することを意味します。

誰かが同様の問題を抱えている場合に備えて、これを残しておくと思いました。

于 2012-09-11T15:28:21.897 に答える