UWP - 目标 .NET 版本?

Posted

技术标签:

【中文标题】UWP - 目标 .NET 版本?【英文标题】:UWP - Targeted .NET version? 【发布时间】:2017-02-11 19:28:49 【问题描述】:

我总是能够为常规 .NET 项目设置目标框架版本。在 UWP 应用程序中,我只能设置 "Windows 10 build version"。

它们与 .NET(核心?原生?)平台版本有什么关系?

【问题讨论】:

Windows 10 您的平台。 @HenkHolterman 我知道我的目标是可以运行我的应用程序的操作系统版本。但它是否与 .NET core 1.0 版本相比? “windows 10周年”和.NET core 1.0(或.NET core 1.1)之间有联系吗? 可以参考the answer here。 【参考方案1】:

UWP 是一组 API(就像任何 .NET 一样)。根据与 Windows 版本的官方版本相关的 API 合同,有不同的 API 可用。这些数字不一样 - 目前微软将每个 Windows 10 官方更新都标记为 API 合同的新主要版本,因此最新添加的 API 标记为 3.0。

【讨论】:

好的,但是与 .NET 平台版本的特定版本有关系吗?它与.NET 核心有关吗? .NET 本机?如果是这样,我怎么能说我可以从我的 UWP 应用程序中解决哪个框架版本? @bas UWP IS 框架。它可能尊重某些 .NET 核心版本(但它肯定不是 .NET 核心),但它与桌面 .NET 框架没有任何关系。它们是完全独立的实体。 .NET Core是UWP Framework的依赖,可以通过.nuget进行管理 @StefanoBalzarotti:不,不是。完全不需要 .NET Core 来定位 UWP。如果您决定使用 .NET 编程语言(无论出于何种原因),它(或多或少)是一种不必要的依赖。 UWP 是基于 COM 的原生编程接口。 @christopherdrum:UWP 是围绕 Windows API 的 native 包装器。 UWP 中没有 .NET。现在您可以使用 .NET 编程语言,前提是您可以引入 .NET Core 依赖项。这可能是也可能不是问题。如果您正在开发可重用的组件,您可能希望保持低依赖性,并仅使用本机编程语言(C、C++、带有 WRL 的 C++、C++/CX 或 C++/WinRT)。如果您想使用 .NET 编程语言,请确保您了解 .NET Core 缺少一些 .NET Standard 功能。【参考方案2】:

UWP 不针对 NET 框架版本,而是针对 SDK 版本,您可以在项目属性中更改 sdk 版本:

您还可以设置最低目标版本。

此外,由于 UWP .NET 项目(C# 或 Visual basic)基于 .NET Core,您可以通过 .nuget 升级(或降级).NET Core 版本:

【讨论】:

UWP SDK不是基于 .NET Core。它严格来说是具有本机编程接口的本机实现。 .NET Core 是决定使用托管编程语言(如 C#)的模块的依赖项。 @IInspectable 在 .NET 项目中,您不能直接使用 C++ 本机类,您需要将该类编组到另一个 .NET 类中。因此,当您使用 Page 类或 .NET 中的任何其他类时,您将使用实现 System.Object 的托管类。谁在乎是否基于本机实现,您总是使用 .NET 托管接口。由于 .NET Page 类(本机实现的包装器)从 System.Object 继承,因为所有 .NET 类和 System.Object 都在 .NET Core 中定义(对于 UWP 项目)我可以说:.NET UWP 项目中的 Page 类有一个与 .NET Core 的依赖关系。 另外,我知道你想给出一个准确的解释,但这个问题显然与 .NET 上下文有关。也许我应该解释得更好,但没有人认为原生 UWP SDK 依赖于 .NET Core。 “.NET UWP 项目中的页面类依赖于 .NET Core。” - 这是不准确的。创建 .NET Core 依赖项的是语言 projection,而不是 Page 类(或任何其他 UWP 类型)本身。 SDK 实际上只是本机代码加上 .winmd 元数据。 @iinspectable,我认为 UWP 依赖于 .net 核心的 corefx(基类库)部分,但它在发布模式下不使用其中的 CoreCLR(运行时)部分。该运行时是真正的原生 C++ 运行时。

以上是关于UWP - 目标 .NET 版本?的主要内容,如果未能解决你的问题,请参考以下文章

升级目标版本和最低版本后 UWP 应用程序未调试

UWP:从共享目标共享

Xamarin.Forms UWP 应用程序在运行时使用 .net 本机工具链失败,但以其他方式工作

Windows SDK UWP 应用程序错误 - DEP3321

.net Core 多目标和 .net Standard 有啥区别?

UWP:有效负载包含两个或多个具有相同目标路径的文件