.NET-分发依赖于未签名第三方库的已签名(强名称)库

.NET-分发依赖于未签名第三方库的已签名(强名称)库,.net,nuget,.net-assembly,nuget-package,.net-standard,.net,Nuget,.net Assembly,Nuget Package,.net Standard,我对通过NuGet交付的.NET库有以下要求: 应与.NET Framework和.NET核心应用程序兼容 应签名/strong命名,以允许在自行签名/strong命名的应用程序中使用 我为满足这些要求而采取的方法是将.NET标准作为目标平台,并签署应用程序。现在并发症开始了 我的库所依赖的另一个库是非签名/strong命名库(在它的.NET标准兼容变体中)。这将导致运行时异常,如下所示: Unhandled Exception: System.IO.FileLoadException: C

我对通过NuGet交付的.NET库有以下要求:

  • 应与.NET Framework和.NET核心应用程序兼容
  • 应签名/strong命名,以允许在自行签名/strong命名的应用程序中使用
我为满足这些要求而采取的方法是将.NET标准作为目标平台,并签署应用程序。现在并发症开始了

我的库所依赖的另一个库是签名/strong命名库(在它的.NET标准兼容变体中)。这将导致运行时异常,如下所示:

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
在这一点上,我看到以下选项继续,但我不确定采取哪一个,以及是否有更好的方法来做到这一点

选项1

不要对库进行签名,并在必要时将其留给包的用户对库(以及依赖库)进行签名。简单明了,但对于依赖强命名库(例如,对自己的应用程序进行签名)的开发人员来说,这会带来很多工作

选项2

为.NET Framework和.NET Core创建单独的项目和NuGet包。强名称.NET Framework的项目/包,但不是.NET Core的项目/包。优点:开发人员可以选择适合其应用程序需要的NuGet包。缺点:作为库提供者,我需要付出努力,因为两个99%相同的项目必须并行维护。另外,有两个不同的NuGet包,一个用于.NET Framework,另一个用于.NET Core似乎有些奇怪,因为这正是.NET标准应该用来替代的

选项3

对库和从属库进行签名,并将它们与同一NuGet包一起分发。这是可行的,但签署第三方图书馆并通过NuGet进行分发听起来很“黑客”。此外,如果开发人员在不同版本和/或同一库的未签名变体中使用对同一库的引用,也不确定其含义


如何解决这种情况,有什么建议或其他想法吗?

选项1的“为依赖强名称库的开发人员创造了大量工作”并不是真的。有很多实用程序,比如使在消费者项目中自动签署这样的软件包变得非常容易。没错,但在这三个选项中,它可能仍然是对客户最不友好的变体。选项1的“为依赖强名称库的开发人员创造了很多努力”并不是真的。有很多实用程序,比如在消费者项目中很容易自动签署这样的软件包。没错,但在这三个选项中,它可能仍然是最不友好的。