Chiamare API WinRT da applicazioni .NET 5

di Matteo Tumiati, in Windows 10,

Con il rilascio della Preview 8 di .NET 5 è stata introdotta una nuova modalità di accesso alle API del Windows Runtime (WinRT) per gli sviluppatori .NET. Questo si applica, ad esempio, per applicazioni WinForms che hanno bisogno di accedere alle API semplificate per la geolocalizzazione offerte dal da un runtime più moderno di Windows 10. Questa nuova modalità è basata sull'uso del Target Framework Moniker (TFM) che è stato appunto esteso per supportare questa funzionalità del WinRT, rendendo di fatto obsoleto l'uso del pacchetto di NuGet Microsoft.Windows.SDK.Contracts che eravamo costretti ad installare precedentemente per realizzare scenari simili in .NET Core 3.

Supponendo di essere, appunto, in un'applicazione WinForms basata su .NET 5, quello che dobbiamo fare per poter iniziare ad usare le API del Windows Runtime è abilitare il moniker corrispondente a livello di csproj:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
     <OutputType>WinExe</OutputType>
     <TargetFramework>net5.0-windows10.0.17763.0</TargetFramework>
     <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

Di conseguenza, dopo un rebuild della solution, possiamo andare a referenziare le API che ci interessano come, ad esempio, quelle della geolocation:

private async void Button_ClickAsync(object sender, EventArgs e)
 {
    var locator = new Windows.Devices.Geolocation.Geolocator();
    var location = await locator.GetGeopositionAsync();
    var position = location.Coordinate.Point.Position;
    var latlong = string.Format("lat:{0}, long:{1}",
                                position.Latitude, position.Longitude);
    var result = MessageBox.Show(latlong);
}

Le versioni del TFM attualmente supportate includono 10.0.17763.0, 10.0.18362.0 e 10.0.19041.0, ma ovviamente altre versioni verranno aggiunte non appena saranno rilasciati gli update corrispondenti di Windows.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi