2016-11-02 9 views
0

NuGet経由で任意のプロジェクトに取り込まれたアセンブリ内でカスタムタスクを実装するために作成したカスタムMSBuildターゲットがあります。また、ターゲットファイルは、カスタムターゲットおよび小道具のNuGet規則に従って、ビルドフォルダの下にある同じNuGetパッケージを介して配信されます。以下は、カスタムターゲットアセンブリのDLLを解決しようとした方法です。カスタムMSBuildタスクでNuGetパッケージ経由でインストールされたアセンブリを参照するには?

<UsingTask 
    TaskName="TfsVersionTask" 
    AssemblyFile="$(SolutionDir)\packages\MyPackage.1.0.0.0\lib\MyProjectReferencedAssembly.dll"/> 

問題は、私は$(ProjectDir)または$(SolutionDir)を使用している場合、私はこのプロジェクトは、ソリューションの一部として、またはパッケージフォルダが存在する可能性があるかどうかに構築されているかどうかの仮定を作ってるんだということです。 $(NuGetPackagesDir)の行に沿った変数などの代替案はありますか?

答えて

0

私は相対ディレクトリ検索を使用して質問を投稿した直後に、少なくとも私のために働いている妥当な解決策を見つけました。

<UsingTask 
    TaskName="TfsVersionTask" 
    AssemblyFile="..\lib\net40\MyProjectReferencedAssembly.dll"/> 

これが私の目標は私のパッケージディレクトリの下buildディレクトリに解決し、そこから私のパッケージアセンブリが存在しlibフォルダへの相対参照を使用していると仮定して動作します。このアプローチには予期せぬ欠点があるかもしれませんが、より良い従来のアプローチがありますが、これは今のところうまくいくようです。

関連する問題