Nuget 地狱:由于 public 关键差异,无法在 UWP 应用程序中引用 NuGet 包

Nuget Hell: Cannot reference NuGet package in UWP application due to public key difference

我有一个 UWP 应用程序和一堆 NETStandard 2.0 库。这些库包含许多我在 ASP.NetCore 和桌面 WPF 应用程序中使用的逻辑和通信接口,因此我不打算更改它们。

我在库中使用 NuGet 包,因此我也可以在 NetCore 和 NetFramework 项目中引用它们。我想在 UWP 项目中引用这些包 - 因为这就是这个标准化概念的全部意义,不是吗?

对于 UWP 项目,这不起作用。我有 System.ServiceModel.Primitives 的最新 Nuget 包,它是 4.5.3(DLL 版本 4.5.0.3 - 不要问为什么)和 PublicKeyToken 是 b03f5f7f11d50a3a - 这可以在除 UWP 之外的每个项目。

不管每一次尝试: - 我已经为项目安装了Nuget包 - 我在 CSPROJ 文件中明确引用了版本 - 我删除了所有其他对 SDK 文件版本的引用

但是,UWP 项目仍然在

中查找 dll
C:\Program Files (x86)\Microsoft SDKs\UWPNuGetPackages\microsoft.netcore.universalwindowsplatform.2.8\ref\uap10.0.15138\System.ServiceModel.Primitives.dll

该 DLL 的版本为 4.2.1.1,PublicKeyToken 为 cc7b13ffcd2ddd51

因为这两个标记不同 - 绑定重定向不起作用 - 或者我可能遗漏了一些东西。有人对此有解决方法吗?

整个解决方案在VS2019中,我安装了最新的Win10 SDK 10.0.18362.1。

提前谢谢你。

编辑:我忘了说了,我在 GitHub

上有一个复制品

您可以创建一个单独的 .NET Standard 项目并将您的所有逻辑(以及 System.ServiceModel.Primitives 程序集的使用)封装到该项目中。然后您可以将其添加为对具有 UWP 可执行文件的项目的引用。

您还可以根据此 article

通过指定 codebase 为 strongly-named 程序集设置绑定重定向