Framework di destinazione per Xamarin.Mac

Questo articolo illustra i framework di destinazione (librerie di classi di base) disponibili per Xamarin.Mac e le implicazioni dell'uso nel progetto Xamarin.Mac.

Target framework options for Xamarin.Mac

Background

Ogni programma o libreria .NET dipende dalla funzionalità fornita dalla libreria di classi di base (BCL). Questo BCL include assembly come mscorlib, System, System.Net.Http e System.Xml che forniscono le funzionalità comuni integrate in tutti i linguaggi .NET.

Nel corso degli anni, sono state sviluppate più versioni diverse di questo BCL, ottimizzate per diversi casi d'uso. Il BCL "desktop" include un set più completo di librerie che potrebbero essere troppo pesanti per altri casi d'uso, mentre i dispositivi mobili sono incentrati sulla sicurezza delle API per il collegamento, che rimuove il codice inutilizzato per ridurre il footprint dell'applicazione.

Una delle ripercussioni più importanti di questi diversi framework di destinazione è che tutti gli assembly in un determinato programma devono avere come destinazione assembly BCL compatibili. In caso contrario, è possibile che due assembly siano collegati a versioni diverse del System.dll in disaccordo sulla firma di un determinato tipo. Una libreria condivisa può essere di destinazione .NET Standard 2, ovvero il subset comune dei framework di destinazione o un framework di destinazione specifico.

Sono disponibili tre opzioni del framework di destinazione per Xamarin.Mac, ognuna con vantaggi e compromessi diversi:

  • Moderno (chiamato Mobile nella documentazione precedente): un subset molto simile a quello che supporta Xamarin.iOS, altamente ottimizzato per le prestazioni e le dimensioni. Questo framework di destinazione è sicuro del linker, quindi questi progetti possono avere un footprint finale drasticamente ridotto rimuovendo il codice inutilizzato.

  • Completo (chiamato XM 4.5 nella documentazione precedente): un subset molto simile al BCL "desktop", con alcune piccole rimozioni. Poiché il framework di destinazione è quasi identico a net45 (e versioni successive), può usare facilmente molti nuget che non forniscono build netstandard2 o specifiche di Xamarin.Mac. Tuttavia, a causa dell'utilizzo di System.Configuration, non è compatibile con il collegamento.

  • Non supportato (denominato System nella documentazione precedente): anziché collegarsi a un elenco di controllo di accesso fornito da Xamarin.Mac, usare il sistema corrente installato mono. In questo modo viene fornito il set completo di assembly, tra cui alcuni noti come problematici (ad esempio System.Drawing). Questa opzione esiste solo con un "ultima risorsa" ed è consigliabile esaurire altre opzioni prima di usarla. Come suggerisce il nome, l'utilizzo non è supportato dai canali di supporto ufficiali.

Impostazione del framework di destinazione

Per passare al tipo framework di destinazione per un progetto Xamarin.Mac, eseguire le operazioni seguenti:

  1. Aprire il progetto Xamarin.Mac in Visual Studio per Mac.

  2. In Esplora soluzioni fare doppio clic sul file di progetto per aprire la finestra di dialogo Opzioni progetto.

  3. Nella scheda Generale selezionare il tipo di Framework di destinazione adatto alle esigenze dell'applicazione:

    Using the Project Options window to choose a target framework

  4. Fare clic sul pulsante OK per salvare le modifiche.

È necessario pulire e quindi ricompilare il progetto Xamarin.Mac dopo aver cambiato il tipo di framework di destinazione.

Riepilogo

Questo articolo illustra brevemente i diversi tipi di framework di destinazione (librerie di classi base) disponibili per un'applicazione Xamarin.Mac e quando è necessario usare ogni tipo di framework.