私は .NET Core を使用してプラグイン システムを作成しようとしていますが、要件の 1 つは、プラグイン DLL とその依存関係をユーザーに配布してインストールできるようにすることです。
しかし、ハックとして使用せずに、NuGet 依存関係をビルド成果物として含め、ビルド フォルダーに出力する方法がわかりませんdotnet publish
。.csproj ファイル (プロジェクト ファイル) でこれを指定する方法はありますか?
読者の注意: この質問(および似たもの) そしてドキュメントこの問題のコンテキストでは「プラグイン dll」について話す必要があります。これは、この非コピーはライブラリ プロジェクトでのみ発生するためです。アプリがある場合は、Nuget とその他の依存関係をすべてコピーする必要があります (そうしないと、デバッグできなくなります)。
ベストアンサー1
これを csproj ファイル内に追加して、<PropertyGroup>
NuGet アセンブリをビルド出力にコピーするように強制できます。
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
ただし、ビルド出力 ( bin/Release/netcoreapp*/*
) は移植可能で配布可能であるはずではなく、 の出力が移植可能で配布可能であることにdotnet publish
注意してください。ただし、この場合、アセンブリをビルド出力にコピーすることは、テスト目的で非常に役立つ可能性があります。ただし、DependencyContext
ローカル ディレクトリを列挙する代わりに、API を使用して、アプリケーションの依存関係グラフの一部である DLL とその場所を解決することもできることに注意してください。