4 .NET 6學習筆記——如何在.NET 6的Desktop App中使用Windows Runtime API

Windows Runtime API是當初某軟為了區別Win32 API,力挺UWP而創建的另一套Windows 10專用的API集合 。后來因為一些原因 , UWP沒火 。為了不埋沒很有價值的Windows Runtime API,某軟只好允許.NET Framework的程序調用Windows Runtime API,我們在《遷移桌面程序到MS Store(4)——桌面程序調用Win10 API》中討論過 。而從.NET 5開始,新.NET中Desktop App調用WinRT runtime的方式又發生了變化 ??傮w來說更簡單了,今天我們就一起來實踐一番 。首先我們創建一個新的Console工程 。Framework選擇.NET 6 。除了學習性質的個人項目,否則我只推薦Long-term support的版本,商業性質的項目發布出去以后 , 突然對應版本的.NET Runtime官方支持周期到了 , 是比較滑稽的 。

4 .NET 6學習筆記——如何在.NET 6的Desktop App中使用Windows Runtime API

文章插圖
在這樣一個Console的程序中,我打算訪問一個常見的WinRT API:Windows.Devices.Raidos命名空間下的Radio類 。當然我們也可以通過Win32 API去操作藍牙,可如果僅希望開、關和查詢藍牙狀態這樣的簡單操作,Win32 API就顯得有些蛋疼了 。
而Radio類對.NET 程序而言,就顯得友好許多 。首先讓我們右鍵編輯project文件 。
4 .NET 6學習筆記——如何在.NET 6的Desktop App中使用Windows Runtime API

文章插圖
將默認的:
<TargetFramework>net6.0</TargetFramework>更改為對應具體Windows SDK版本:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net6.0-windows10.0.22000.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup></Project>其中SDK版本的對應關系如下: ? net6.0-windows10.0.17763.0: 對應 Windows 10, version 1809. ? net6.0-windows10.0.18362.0: 對應 Windows 10, version 1903. ? net6.0-windows10.0.19041.0: 對應 Windows 10, version 2004. ? net6.0-windows10.0.22000.0: 對應 Windows 11.完成這一步之后,即可像UWP程序里一樣 , 通過using添Windows.Devices.Raidos命名空間,來直接使用WinRT API了 。
using Windows.Devices.Radios;// See https://aka.ms/new-console-template for more informationConsole.WriteLine("Hello, World!");foreach (var radio in await Radio.GetRadiosAsync()){Console.WriteLine($"Name:{radio.Name}, Kind:{radio.Kind}, State:{radio.State}");}Console.ReadLine();是不是又一次覺得啊軟這回能Make desktop great again!這個現在還不好說,但學習一下如何開發現代化的Desktop App總不是壞事 。
附上Github鏈接:
manupstairs/WinRTApiInNet6: Introduce how to use WinRT API in .NET 6 project. (github.com)
以下鏈接,是MS Learn上Windows開發的入門課程,單個課程三十分鐘到60分鐘不等,想要補充基礎知識的同學點這里:
開始使用 Visual Studio 開發 Windows 10 應用
開發 Windows 10 應用程序
編寫首個 Windows 10 應用
創建 Windows 10 應用的用戶界面 (UI)
增強 Windows 10 應用的用戶界面
在 Windows 10 應用中實現數據綁定
【4 .NET 6學習筆記——如何在.NET 6的Desktop App中使用Windows Runtime API】

    推薦閱讀