我的困惑是我读到UWP使用.NET Core,但是有一个单独的“.NET for UWP”API文档here。另外,我在UWP项目中找不到某些.NET Core功能。.NET是否为通用Windows编程.NET Core的子集?
回答
.NET Core是.NET的一个跨平台子集,可用于为Windows,Linux,Mac和UWP构建应用程序。
UWP Api也是.NET API的一个子集,它可以在.NET Core上运行。它也有一些UWP独有的API。 UWP应用程序可以是.NET核心应用程序,但反过来并不一定是这样。并非所有的.NET核心应用程序都是UWP应用程序。
就像.NET Core的API只适用于Linux或Mac。
不,UWP是一个不同的API,它针对不同的窗口模型,取代传统WINAPI的大部分。你会得到一个.NETCore依赖项,因为VS中的项目模板选择了它。有一个很好的理由,你只能从.NETCore获得UWP(通用Windows平台)中的U,手机和Hololens等设备没有完整的.NET框架版本。试图在移动应用中具有竞争力是UWP的核心原因。
UWP是一个基于COM的api,它为什么与Javascript和C++等语言一起工作的基本原因。否则,隐藏得很好,传统的COM类型库格式被替换为.winmd,这是一种基于.NET元数据格式的格式。它可以模拟COM不支持的功能,如泛型,静态方法和实现继承。 CLR中内置了获得此仿真所需的语言预测。他们可以做的不多,使例外更好地工作。
您也可以在桌面应用程序中使用UWP api。微软不鼓励这样做,所以你从项目模板中得不到任何帮助。易于使用文本编辑器进行修复,将<TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
添加到.csproj文件中,现在可以使用“项目”>“添加引用”并选择一个UWP合约。方便地利用设备命名空间。
我不知道你可以在桌面应用程序中使用UWP。任何额外信息的来源,如限制或任何东西?这听起来很棒。 – FriendlyGuy
它的原始文章有点晚了 - 但是为了解决'从桌面调用uwp',你可以使用UWP Desktop软件包。 https://www.nuget.org/packages/UwpDesktop –
直答:不,它不是!
龙答:很复杂
uap10.0
(UWP)和netcoreapp1.0
(跨platoform .NET核心)都争相应用模型/ SDK /平台(不管术语微软选择提下一个)。我在此使用目标框架标记(技术术语)以避免围绕术语“.NET核心”出现混淆。uap10.0
专注于基于Windows的UI应用程序,而netcoreapp1.0
基本上是跨平台的控制台应用程序(与任何程序都可以运行服务器一样,如ASP.NET)。- 超集/子集问题很棘手。它们重叠。
uap10.0
实施netstandard1.4
和netcoreapp1.0
实现netstandard1.6
(这是一个严格的超集netstandard1.4
)(platform standard documentation)。然而,这两个应用程序模型都增加了重要的附加库(uap10.0
增加了例如Windows.*
库,而netcoreapp1.0
的库被称为Microsoft.NETCore.App
(NuGet))添加了诸如不可变集合,网络,文件系统,密码术和其他未标准化的东西跨.NET实现)。 - 术语“.NET核心”基本上是搞砸了。运行
uap10.0
/UWP的CLR源自Silverlight,其标记为运行时coreclr
。现代跨平台netcoreapp1.0
使用从UWP项目派生的CLR。基于System.Runtime
而不是基于mscorlib
的库的情况也是如此。
- 1. 无法创建引用.NET Core 2.0程序集的Windows服务
- 2. .NET通用集?
- 3. .Net Core 2.0 Windows服务
- 4. 将Windows CE Forms转换为.Net Core
- 5. .NET Core中的Crossgen编译
- 6. 在.NET Core中加载程序集
- 7. .net core msbuild nuget附加程序集
- 8. .Net Core是否会生成与标准.Net相同的IL?
- 9. .NET Core == .Net Framework 5?
- 10. .Net Core是否支持反射?
- 11. .NET Core是否与COM兼容?
- 12. Azure.ConfigurationManager是否与.Net Core兼容?
- 13. libevent,windows和.NET编程
- 14. 是否有可能确定.NET程序集编写的语言?
- 15. .NET是否有图标集?
- 16. 将.Net dll转换为.Net Core dll
- 17. 将.Net Compact Framework 3.5转换为.Net Core
- 18. 用.net编程
- 19. asp net net core export to Excel
- 20. .Net 3.5 WebService无法通过.Net 1.1调用Windows应用程序
- 21. 编写一个可以支持.Net Core和.Net框架的应用程序
- 22. 无法在通用Windows或WPF应用程序中引用.NET Core类库
- 23. .NET Core MVC通用控制器视图
- 24. NetFramework转换为Net Core(HttpWebRequest)
- 25. .Net Core 2.0默认为0
- 26. 使用.NET Core创建Windows应用程序
- 27. 在.net Core中引用.net 4.6.1库
- 28. .NET CLI仅适用于.NET Core吗?
- 29. 在.NET CORE
- 30. .NET Core蓝牙
您是否阅读过[.NET平台标准](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md)?这可能会略微清除它。 – yaakov