proiezioni del linguaggio Windows Runtime (WinRT)

Windows Runtime (WinRT) è un'architettura di applicazioni indipendente dal linguaggio per la creazione di API e componenti Windows. Una proiezione del linguaggio espone le API WinRT in base alle convenzioni di un linguaggio di programmazione specifico, in modo che il codice C# o C++ possa chiamarli come altre API nel linguaggio.

Comprendere il funzionamento delle proiezioni ti aiuta a decidere se usare le API WinRT nella tua app o creare i tuoi componenti WinRT riutilizzabili. Questo articolo illustra in che modo una proiezione del linguaggio esegue il mapping dei metadati WinRT a C# e C++, quali proiezioni Microsoft supporta e quando è necessaria la documentazione di proiezione.

Funzionamento delle proiezioni del linguaggio

Windows file di metadati (.winmd) definiscono le API WinRT. Una proiezione del linguaggio legge i metadati ed espone le API in base alle convenzioni di un linguaggio di programmazione specifico. Quando si crea un progetto da un modello standard SDK per app di Windows o WinUI, il modello configura già la proiezione del linguaggio e il codice C# o C++ può chiamare direttamente le API WinRT senza usare i metadati sottostanti o l'interfaccia ABI (Application Binary Interface).

Proiezioni linguistiche supportate

Microsoft supporta le proiezioni del linguaggio C# e C++ per le app SDK per app di Windows e WinUI. I progetti della community forniscono proiezioni per altri linguaggi, ad esempio Rust, ma Microsoft non li supporta ufficialmente.

Projection Language Elementi forniti
C++/WinRT C++17 o versione successiva Proiezione di linguaggio C++ standard per l'utilizzo e la creazione di API e componenti WinRT.
C#/WinRT C# (.NET) Proiezione del linguaggio .NET per l'utilizzo delle API WinRT e la creazione di componenti WinRT.

Quando usare la documentazione di proiezione del linguaggio

Per la maggior parte dello sviluppo di app, puoi usare API WinRT proiettate come altre API nel linguaggio scelto. Usa la documentazione sulla proiezione quando:

  • Creare un componente Windows Runtime utilizzato da altre app o lingue.
  • Distribuire una libreria come pacchetto NuGet che esegue il wrapping delle API WinRT.
  • Usare interfacce COM o ABI di basso livello dal codice C++.
  • Risolvere gli errori di compilazione relativi al codice di interoperabilità generato o ai file .winmd.