为什么我不能在我的 UWP v6.0.1 项目中添加对 .NET Core 2.0 库的引用?

Why can't I add a reference to a .NET Core 2.0 Library in my UWP v6.0.1 Project?

我的解决方案中有两个 .NET Core 2.0 项目和一个通用 Windows 平台版本 v6.0.1 项目(主要)(两个目标都设置为 Build 16299)。当两个 .NET Core 2.0 项目中的任何一个时,我都会收到一条错误消息 "Unable to add a reference to project "xx”。如果能告诉我原因就好了。

作为测试,我添加了一个新的 .NET Standard 2.0 库并且我能够引用它。据我有限的了解,.Net Standard 2.0 与最新的.Net Core 2.0 兼容,那么.NET Core 2.0 不应该也与UWP 6.0.1 兼容吗?当我查看比较 .NET 标准的图表时,它清楚地表明 .NET Standard 2.0 与 .NET Core 2.0 兼容。

.Net Standard Versions

如果所有这些都不是令人惊讶的混淆,UWP 项目有 Microsoft .NETCore 包,其中列出了 .NET Core 2.0:

此外,虽然未显示,但 UWP 包具有 .NETCore 5.0 版依赖项!我的印象是 .NET Core 只有 2.0 版:

这是怎么回事?一些澄清会很好。

旁白: Microsoft 似乎是一个不连贯的组织,正如其令人难以置信的令人困惑的 .NET 体系结构及其分散且杂乱无章的文档所展示的那样。似乎所有不同的部门都在重复工作,没有更高级别的指导。也许,他们需要一个.NET Czar。

.NET Core 实现了 .NET Standard,但它可能有一些其他地方不可用的 API。你说的就像在说 "UWP implements .NET Standard so I could use UWP APIs in every .NET Standard project" 而那不是真的。

.NET Standard 只是所有 .NET 平台上可用的 API 的一个子集。它是 PCL 的替代品。您可以在每个使用 .NET 的 .NET app/library 中使用 .NET Standard 库来实现特定版本的 .NET Standard。


PS:是的,.NET Standard 与其他标准之间的关系有点令人困惑。也花了我一些时间去理解它。

看看这个页面上的矩阵 - https://docs.microsoft.com/en-us/dotnet/standard/net-standard

在您的示例中,如果您想使用 UWP 项目中的 .NET Standard 2.0 库,UWP 项目必须将最小目标设置为 16299

同样,netcore 2.0可以消费netstandard 2.0

提供有关您要安装哪个包以及安装到哪个项目的确切信息。通常输出 window 会告诉您软件包安装失败的确切原因。

Restoring packages for C:\Users\karann\Source\Repos\UWPWeatherAppKRN\UWPWeatherAppKRN\UWPWeatherAppKRN.csproj...
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586). Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-arm. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-arm-aot. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x64. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x64-aot. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x86. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
NU1202: Package netstandard2_lib 1.0.0 is not compatible with uap10.0.10586 (UAP,Version=v10.0.10586) / win10-x86-aot. Package netstandard2_lib 1.0.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
Package restore failed. Rolling back package changes for 'UWPWeatherAppKRN'.
Time Elapsed: 00:00:01.1049694

搜索 NU1202,你会得到这个页面 Errors and warnings