是否可以将nuget包添加为仅运行时依赖项?

时间:2020-10-22 12:46:01

标签: c# dll nuget-package

我正在处理以下项目:

  • MyFramework.csproj(类库)

  • MyCustomerApp.csproj(类库)

    引用MyFramework

  • MyLauncher.csproj(可执行程序)

    引用MyLauncherDependency.nupkg

MyCustomerApp.csproj是一个“可运行”项目,其工作方式如下:

  1. MyLauncher.exe从MyLauncher项目复制到MyCustomerApp的输出
  2. 运行MyLauncher.exe时,它使用Assembly.Load(..)加载MyCystomerApp.dll

有一个特定的原因可以解释为什么我们不具备这种机制,请暂时考虑。

现在是问题所在; MyLauncherDependency是MyLauncher的依赖项,但不是MyCustomerApp的依赖项。因此,MyLauncherDependency不是MyCustomerApp的编译时依赖性-而是运行时依赖性-因为它在运行时需要MyLauncherDependency.dll。

我不想将MyLauncherDependency.nupkg添加到MyCustomerApp,因为我不想让工程师访问MyCustomerApp中MyLauncherDependency的类。

所以我的问题是:如何将MyLauncherDependency.nupkg(或MyLauncherDependency.nupkg)添加到MyCustomerApp作为仅运行时依赖项?

1 个答案:

答案 0 :(得分:0)

您必须使用Nuget吗?

MEF(托管扩展框架)非常适合在运行时加载插件。

https://docs.microsoft.com/en-us/dotnet/framework/mef/