2017-04-25 19 views
0

私はいくつかの他のものに依存するナゲットパッケージを持っています(例えばNewtonsoft.Json)。 パッケージは、パッケージの構造は、そのように見えるので、それが唯一のカスタムMSBuildのアクションを追加するクラスライブラリとして使用することが意図されていない:私はパッケージCustomBuildAction.targetsをインストールするとナゲットパッケージからナゲットパッケージを参照する

-package CustomBuildAction 
|-lib/net45/CustomBuildAction.dll 
|-build/CustomBuildAction.targets 

正しくcsprojからreferensedされているが、ときに私がよビルドを実行しようとするとエラーが発生します。

"customBuildAction"タスクを "path to dll/CustomBuildAction.dll"アセンブリから読み込めませんでした。ファイルまたはアセンブリ 'Newtonsoft.Json.dll、Version = ...'またはその依存関係の1つを読み込めませんでした。

パッケージ依存性としてnuspecファイルにNewtonsoft.Json.dllを含めると、Nugetはそれを依存関係として示しますが、MSBuildは解決できません。

../lib/net45/CustomBuildAction.dll 

しかし、このDLLを配置することを意図していない。私にとっては、問題はすなわち、パッケージフォルダに(相対フォルダを構築するために)私は、相対パスを使用して.targetsファイルから CustomBuildAction.dllを参照してるということであるように見えますすべての依存関係を見つけることができるビルド出力フォルダに移動します。 この問題を解決するにはどうすればよいですか?パッケージに依存関係を含めるべきか、それを解決する別の方法がありますか?

+0

カスタムMSBuildアクションでのみ使用されているプロジェクトは、CustomBuildAction.dllを参照する必要がありますか?私は.targetsファイルの隣のビルドディレクトリに置いてそこからインポートします。その後、Newtonsoft.Json.dllもビルドディレクトリに置いてください。 –

+0

@Matt Wardいいえ、プロジェクトに参照として追加する必要はありません。 DLLをビルドフォルダに移動しようとすると、興味深いアイデア – Leo

答えて

0

MSBuildは、タスクアセンブリを含むフォルダからタスクの依存関係を解決します。残念ながら、これはNuGetパッケージにCustomBuildAction.dllファイルの横にNewtonsoft.Json.dllを含める必要があることを意味します。

アセンブリがビルド出力にならないようにするには、アセンブリをパッケージ内の別のフォルダに配置します。例えば、lib/lib内にない限り、tools /は参照可能なアセンブリとして扱われません。

関連する問題