我的困惑是我讀到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 Core)引用ASP.NET Core Web應用程序(.NET Core)
- 3. .NET Compact是.NET的完美子集嗎?
- 4. .NET通用集?
- 5. .Net Core 2.0 Windows服務
- 6. .NET Core中的Crossgen編譯
- 7. 將Windows CE Forms轉換爲.Net Core
- 8. 在.NET Core中加載程序集
- 9. .net core msbuild nuget附加程序集
- 10. .NET Core == .Net Framework 5?
- 11. .Net Core是否會生成與標準.Net相同的IL?
- 12. C#6.0是否支持.net core或.net core響應更高版本的C#?
- 13. Azure.ConfigurationManager是否與.Net Core兼容?
- 14. .NET Core是否與COM兼容?
- 15. .Net Core是否支持反射?
- 16. 安裝.NET 4.5是否真的替代.NET 4.0程序集?
- 17. libevent,windows和.NET編程
- 18. 將.Net Compact Framework 3.5轉換爲.Net Core
- 19. 將.Net dll轉換爲.Net Core dll
- 20. .NET是否有圖標集?
- 21. 是否有可能確定.NET程序集編寫的語言?
- 22. asp net net core export to Excel
- 23. 用.net編程
- 24. 如何在Windows計算機上編譯用於Linux的.NET Core應用程序
- 25. Azure通知中心套件是否與.NET Core兼容?
- 26. 編寫一個可以支持.Net Core和.Net框架的應用程序
- 27. .Net 3.5 WebService無法通過.Net 1.1調用Windows應用程序
- 28. 將Angular SpaTemplate Core轉換爲Core .Net Framework
- 29. .NET Core替換爲ConvertTimeToUtc?
- 30. .Net Core 2.0默認爲0
您是否閱讀過[.NET平臺標準](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md)?這可能會略微清除它。 – yaakov