C# Nuget地狱:由于公钥差异,无法在UWP应用程序中引用Nuget包

C# Nuget地狱:由于公钥差异,无法在UWP应用程序中引用Nuget包,c#,wcf,uwp,nuget-package,.net-standard-2.0,C#,Wcf,Uwp,Nuget Package,.net Standard 2.0,我有一个UWP应用程序和一堆NetStandard2.0库。这些库包含我在ASP.NetCore和桌面WPF应用程序中使用的许多逻辑和通信接口,因此我不打算更改它们 我在库中使用NuGet软件包,这样我也可以引用NetCore和NetFramework项目中的软件包。我想在UWP项目中引用这些包-因为这就是这个标准化概念的全部要点,不是吗 对于UWP项目,这不起作用。我有System.ServiceModel.Primitives的最新Nuget包,它是4.5.3(DLL版本4.5.0.3-不问

我有一个UWP应用程序和一堆NetStandard2.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\6.2.8\ref\uap10.0.15138\System.ServiceModel.Primitives.dll
该DLL的版本为4.2.1.1,PublicKeyToken为CC7B13FFCD2DD51

因为这两个令牌是不同的-绑定重定向不起作用-或者可能我遗漏了什么。有人对此有解决办法吗

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

先谢谢你


编辑:我忘了提到,我有一个关于

的复制。您可以创建一个单独的.NET标准项目,并将您的所有逻辑(以及
System.ServiceModel.Primitives
程序集的用法)包含在此项目中。然后,您可以将其添加为具有UWP可执行文件的项目的引用


另外,您还可以通过指定
codebase
为强名称程序集设置绑定重定向,根据此

查看一下这个,我认为,您需要使用
codebase
奇怪的行为将逻辑封装到单独的.NET标准程序集中,并为强类型程序集设置绑定重定向。当我创建一个uwp空白项目时,它将从
C:\ProgramFiles(x86)\Microsoft SDK\UWPNuGetPackages\Microsoft.netcore.universalwindowsplatform
获取引用,而不是从正常位置
C:\Users\xxx\.nuget\packages
获取引用。我相信这是uwp的一些默认行为。(团队可能会在未知的配置文件中定义此规则)。在大多数情况下,它不会影响您的应用程序开发。但由于两个System.ServiceModel.Primitives具有相同的名称但具有不同的标记,因此会出现此问题。因此,我建议您通过Visual Studio“报告问题”报告此问题工具让相关团队知道这一点。谢谢你,Liceleli MSFT。我已经创建了一个GITHUB问题。与此同时,我正试图重新组织我的代码,就像Pavel Anikhouski建议的那样,看看它是否有效。@丹尼尔莱森,朋友,看来PA的答案有助于解决这个问题。如果是这样,你可以考虑把它标记为答案。只是一个RMI。nder:)