Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il codice XAML dell'interfaccia utente delle app multipiattaforma .NET MAUI può essere elaborato e convertito in un albero di oggetti in diversi modi qui illustrati. A partire da .NET 10, le impostazioni predefinite sono l'ambiente di esecuzione per le compilazioni di debug, XamlC (XamlCompilation) per le compilazioni di Release. Ti invitiamo a provare la generazione di origine e usarla se funziona per te. Questo diventerà il futuro in nuovi progetti, poi in tutti i progetti, presto.
Compilazione XAML
XAML viene compilato direttamente in linguaggio intermedio (IL) con il compilatore XAML (XAMLC). La compilazione XAML offre diversi vantaggi:
- Esegue il controllo in fase di compilazione di XAML, notificando eventuali errori.
- Rimuove parte del tempo di caricamento e creazione di istanze per gli elementi XAML.
- Consente di ridurre le dimensioni del file dell'assembly finale non includendo più i file con estensione xaml.
La compilazione XAML è abilitata per impostazione predefinita nelle app MAUI .NET. Per le app compilate usando la configurazione di debug, la compilazione XAML fornisce la convalida in fase di compilazione di XAML, ma non converte il codice XAML in IL nell'assembly. I file XAML vengono invece inclusi come risorse incorporate nel pacchetto dell'app e valutati in fase di esecuzione. Per le app compilate usando la configurazione di rilascio, la compilazione XAML fornisce la convalida del XAML in fase di compilazione e converte il XAML in IL scritto nell'assembly. Tuttavia, il comportamento di compilazione XAML può essere sovrascritto in entrambe le configurazioni con la classe XamlCompilationAttribute.
Importante
Le associazioni compilate possono essere abilitate per migliorare le prestazioni del data binding nelle applicazioni MAUI .NET. Per altre informazioni, vedere Binding compilati.
Inflazione del runtime XAML
XAML può essere gonfiato in fase di esecuzione usando la reflection. Offre vantaggi, ad esempio per consentire uno scenario di ricaricamento rapido, ridurre i tempi di compilazione, consentire il report della diagnostica nell'IDE. Tuttavia, in genere questo metodo deve essere evitato perché è anche il più lento e gli errori di sintassi vengono rilevati solo in fase di esecuzione.
Generazione di codice XAML
A partire da .NET 10, XAML può essere trasformato in codice C# in fase di compilazione. Sono disponibili i seguenti benefit:
- Coerenza: stesso codice generato usato in Debug e Rilascio
- Velocità: i tempi di inflazione nel dispositivo sono 10000% (100 volte) più velocemente in Debug e 25% più velocemente al rilascio. Il volume di allocazione è ridotto nella stessa proporzione
- Debug: è possibile visualizzare il codice generato, è possibile interromperlo ed eseguirne il debug.
Questo è il modo consigliato per proseguire. Verrà abilitato per impostazione predefinita in futuro.
Abilitare la generazione del codice sorgente e le impostazioni per file
Non è più consigliabile usare l'attributo [XamlCompilation] per abilitare o disabilitare la compilazione dei file.
Puoi abilitare la generazione dell'origine XAML a livello di progetto impostando il MauiXamlInflator valore su SourceGen nel file csproj, come illustrato di seguito:
<MauiXamlInflator>SourceGen</MauiXamlInflator>
Verrà usata la generazione di origine per le configurazioni release e debug per tutti i file.
È possibile ripristinare il valore predefinito per file (o usare caratteri jolly) o forzare un altro algoritmo di decompressione.
<ItemGroup>
<MauiXaml Update="MyFile.xaml" Inflator="SourceGen" /> <!-- enable sourcegen on a single file. prefer setting it at project level -->
<MauiXaml Update="Controls\**.xaml" Inflator="Default" /> <!-- revert to defaults for all XAML in Controls. as of .NET 10, default is XamlC for Release, Runtime for Debug -->
<MauiXaml Update="Controls\**.xaml" Inflator="Runtime" /> <!-- force runtime inflation. if you have to do this, it probably indicates a bug in both XamlC and sourcegen, please report -->
</ItemGroup>
È possibile impostare altri metadati per indicare a xaml sourcegenerator
<ItemGroup>
<MauiXaml Update="MyFile.xaml" Inflator="SourceGen" NoWarn="0612;0618" /> <!-- prevent the compiler to fail if the xaml use deprecated API -->
</ItemGroup>