背景: 「A」と「B」という 2 つのアセンブリがあります。「「A」は「B」を参照します。「A」は、nupkg にパッケージ化する必要があると思われる追加の dll (Microsoft.Enterprise Library.Data および Microsoft Enterprise Library.Common ) も参照します。
私のnupkgパッケージには、「A」、「B」、および2つの「Microsoft Enterprise」アセンブリからのアセンブリ出力が含まれている必要があるため、誰かが私のパッケージをインストールすると、アセンブリ「A」と他の3つへの直接参照が提供されます。アセンブリが利用可能になります (ただし、直接参照されないため、アプリが実行されます。参照されていない dll をパッケージ化する正しい方法は何ですか?
試行 #1: 必要なすべての dll を \net35 フォルダーにパックする 「参照」要素に関する NuGet ドキュメント によると、「この要素を省略した場合、lib フォルダー内のすべてのアセンブリを参照するという通常の動作が適用されます。」
したがって、この要素を使用することで、参照として指定されたアセンブリのみが含まれると思います。「ファイル」要素も使用する場合、これは当てはまらないようです<file src=*.dll" target="lib\net35" />
。すべての dll をパッケージにコピーするこのような要素がある場合、このパッケージを実装するアセンブリは、\net35 ディレクトリ内のすべてのアセンブリを参照します。これは私がやりたいことではありません。「参照」で指定されたアセンブリのみが実際に参照され、他のすべては展開された \packages フォルダーに残り、すべての dll が同じディレクトリにあるため、アプリが機能するという魔法を期待していました。たぶん私は間違っている....
試み #2 コンテンツとしてプロジェクトに追加 するパッケージ化されたときに参照されていないアセンブリを lib\net35 ではなく \content\lib に配置すると、プロジェクトに \lib フォルダーが作成され、\content\lib dll がそのプロジェクトに直接ダンプされます。それらをソース管理にチェックインします。これは機能し、コンパイルして実行しますが、これらをプロジェクトの \lib フォルダーに保存したくありません。
プロジェクトが「A」への参照を取得し、同じ場所にあるが直接参照されていない他の必要なアセンブリを使用して実行できるソリューションを探しています。試行 #1 が正しいパスのようですが、バグがあるのでしょうか?
参考までに、チームにも回答があることを確認するために、これを NuGet の問題として直接入力しました。