2012-08-02 25 views
10

MSBuildTasksをMSBuildファイルから参照しようとしていますが、MSBuildTasksにNuGetを使用するときにこれを行う方法がわかりません。NugetパッケージからMSBuildTasksを参照する

参照を使用すると、msiファイルを使用してMSBuildTasksをインストールしたとき

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 

を使用することを言います。しかし、NuGetからインストールすると、バージョンを含むサブフォルダに格納されるので、MSBuildTasksをアップグレードすると、ビルドファイルのパスが破損します。 MSBuildTasksをNuGet経由でインストールしたときに参照する最良の方法は何ですか?

答えて

6

私は最近、resourcelib, のMSBuildTasksバージョン1.4.0.45を使用してこれを設定しました。このバージョンでは、プロジェクトに追加すると、DLLが「ビルド」サブディレクトリに置かれ、チェックインする必要があります。私は自動ダウンロードを試みましたが、プロジェクトファイルで参照されていれば最初からそこにいてください。それは、コマンドラインでのMSBuildを使用して構築することができますので、ここでMSBuildProjectDirectory

<PropertyGroup> 
    <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Build</MSBuildCommunityTasksPath> 
</PropertyGroup> 
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/> 

が使用されている:プロジェクトに追加するには

は、私は次のコードを使用していました。

+3

この回答は非常に役に立ちましたが、NuGetがターゲットファイルを置くディレクトリは現在、 '$(SolutionDir)\。build'であることがわかりましたので、上記の設定がうまくいかない場合は、 ' $(SolutionDir)\。build' – providencemac

+2

'.build'フォルダを追加するNuGetパッケージのPowerShellスクリプトはバージョン1.5から削除されていますが、 'ガイドはまだそれを使用することを示唆しています。私は[問題](https://github.com/loresoft/msbuildtasks/issues/258)を提出しました。 – Neo

5

他の誰かがこの問題に直面した場合に備えて、これをここに投げてください。 NuGet経由でMSBuildCommunityTasksをインストールすると、.buildフォルダがソリューションに追加されたように見えます。これはソースコードでチェックインすることをお勧めします。ただし、MSBuild.Community.Tasks.targetsファイルには、正しくないc:\ Program Files(x86)フォルダを指す<MSBuildCommunityTasksPath>要素があります。このフォルダは、MSIを使用してMsBuildCommunityTasksをインストールするときに有効です。 Nugetの場合、これは無効です。MsBuildCommunityTasksをソリューションのパッケージフォルダにインストールします。だから私は、.targetsファイルを変更することになった、とを指すようにMSBuildCommunityTasksPathを変更:

<MSBuildCommunityTasksPath>$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools</MSBuildCommunityTasksPath> 
それでも

がないサイコロ。最後に、私はWebプロジェクトのファイルが編集、およびこれにMSBuildCommunityTasksのインポート要素を変更:

<Import Project="$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools\MSBuild.Community.Tasks.Targets"/> 

それが直接のパッケージフォルダ内の.Targetsファイルを検索するためのプロジェクトを伝えるため、これは、動作します。 MSBuildTasksバージョンをアップグレードする場合は、Import要素を変更する必要があることに注意してください。私はMsBuildのnoobですので、誰かが私にこれを自動化する方法を教えてもらえると素晴らしいでしょう!

+0

なぜ ''がありませんか?おそらくあなたの答えの監督。 – HankCa

関連する問題