2016-05-20 6 views
1

TFS2015に格納されている.netソリューション(別の会社のもの)のXAMLビルド定義を構成する作業を進めています。Visual StudioからMSBuildの参照検索フォルダを追加するビルド定義UI

解決策は、開発者用コンピュータにインストールされたソフトウェアXのDll参照を使用しますが、ビルドサーバーには存在しません。 (FTSサーバーとビルドサーバーは多くのクライアントで共有されています)。

必要なDLLをソースコードと共にフォルダに追加するオプションがありますが、.csprojファイルを変更するオプションはありません。ビルド定義で

、私はMSBuildの引数フィールドに次を追加しようとしました:

/p:AdditionalLibPaths=$/[long tfs path here]/CommonDlls 

/p:AdditionalLibPaths=$(SourceDir)/CommonDlls 

が、それは動作しません。

理想的には、ソースコードのルートから相対フォルダを指定したいと考えています。 (静的なパスは機能するかもしれませんが、共有ビルドの目的ではない1つのビルドサーバーとエージェントのためだけです)。

私はこのパラメータをどのように定義することができますか?

事前ビルドスクリプトパスを追加するオプションもあります。私はソースコードと一緒にスクリプトファイルを保存することができます。どのようにそのようなスクリプトファイルを書くための任意のポインタ?

答えて

1

本当にスクリプトは必要ありません。 この作業を行うには2つのことがあります。

最初の手順は、DLLがエージェントの作業フォルダにダウンロードされていることを確認することです。最も簡単な方法は、$/[long tfs path here]/CommonDllsがビルド作業領域にマップされていることです。これは、「Build Definition」の「」の「ソース設定」で指定します。マッピングに$(SourceDir)トークンを使用するように注意してください(hereを参照)。

2番目のポイントは、ダウンロードしたフォルダへの適切な参照を使用することです:TF_BUILD_SOURCESDIRECTORY変数を使用してください(詳細はhereを参照)。

だから、あなたは

$/[long tfs path here]/CommonDllsのようなマッピングを追加した場合 - >$(SourceDir)\CommonDlls

使用$(TF_BUILD_SOURCESDIRECTORY)\CommonDlls

+0

答えが正しくパスパラメータを渡すのを助けました。しかし、 "AdditionalLibPaths"は必要な結果を達成しませんでした。これをReferencePathに置き換えると正しく動作しました。 – RMS

0

は、それが他のすべてのディレクトリを考慮することが警告、私はそれを無視していたかもしれないということにかかった時間、それがすべてで開始し、右のいずれかを取得するために、ほぼ20トライアル連れて行ってくれたが、ここで警告最初

Cです:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1820,5):警告MSB3245:この参照を解決できませんでした。アセンブリ "nameOfDllFile"を見つけることができませんでした。アセンブリがディスク上に存在することを確認します。コードでこの参照が必要な場合は、コンパイルエラーが発生することがあります。

、これはバイナリは、質問からCommonDllsと同等です

/p:ReferencePath="$(build.sourcesdirectory)\Binaries" 

を作業それを得た引数であり、それはすべてのために漠然とした文書であり、MSBuildののバージョンの違い、鉱山14.0(VS2015)です。

関連する問題