Condividi tramite


Compatibilità delle applicazioni in .NET Framework

La compatibilità è un obiettivo importante di ogni versione di .NET Framework. La compatibilità garantisce che ogni versione sia aggiuntiva, quindi le versioni precedenti continueranno a funzionare. D'altra parte, le modifiche apportate alle funzionalità precedenti (ad esempio, per migliorare le prestazioni, risolvere i problemi di sicurezza o correggere i bug) possono causare problemi di compatibilità nel codice esistente o nelle applicazioni esistenti eseguite in una versione successiva.

Ogni app è destinata a una versione specifica di .NET Framework tramite:

  • Definizione di un framework di destinazione in Visual Studio.
  • Specificare il framework di destinazione in un file di progetto.
  • Applicare un TargetFrameworkAttribute al codice sorgente.

Quando si esegue la migrazione da una versione di .NET Framework a un'altra, esistono due tipi di modifiche da considerare:

Modifiche al runtime

I problemi di runtime sono quelli che si verificano quando un nuovo runtime viene inserito in un computer e cambia il comportamento di un'app. Quando è in esecuzione in una versione più recente rispetto a quella di destinazione, .NET Framework usa un comportamento stravamato per simulare la versione di destinazione precedente. L'app viene eseguita nella versione più recente, ma funziona come se fosse in esecuzione nella versione precedente. Molti dei problemi di compatibilità tra le versioni di .NET Framework vengono mitigati tramite questo modello di adattamento. Ad esempio, se un file binario è stato compilato per .NET Framework 4.0 ma viene eseguito in un computer con .NET Framework 4.5 o versione successiva, viene eseguito in modalità compatibilità .NET Framework 4.0. Ciò significa che molte delle modifiche nella versione successiva non influiscono sul file binario.

La versione di .NET Framework destinata a un'applicazione è determinata dalla versione di destinazione dell'assembly di ingresso per il dominio applicazione in cui viene eseguito il codice. Tutti gli assembly aggiuntivi caricati in tale dominio di applicazione sono destinati a tale versione. Ad esempio, nel caso di un eseguibile, la versione di destinazione dell'eseguibile è la modalità di compatibilità in cui vengono eseguiti tutti gli assembly del dominio applicazione.

Modifiche nel retargeting

Le modifiche di reindirizzamento sono quelle che si verificano quando un assembly viene ricompilato per impostare come destinazione una versione più recente. Il passaggio a una versione più recente significa che l'assembly opta per le nuove funzionalità insieme a potenziali problemi di compatibilità per le vecchie funzionalità.

Classificazione dell'impatto

Negli articoli che descrivono le modifiche di runtime e reindirizzamento, ad esempio, le modifiche di reindirizzamento per la migrazione a .NET Framework 4.8.x, i singoli elementi vengono classificati in base all'impatto previsto come indicato di seguito:

Maggiore
Modifica significativa che influisce su un numero elevato di app o che richiede una modifica sostanziale del codice.

secondaria
Modifica che influisce su un numero ridotto di app o che richiede modifiche minime del codice.

Caso limite
Modifica che influisce sulle app in scenari molto specifici che non sono comuni.

trasparente
Una modifica che non ha effetti evidenti sullo sviluppatore o l'utente dell'app. L'app non deve richiedere modifiche a causa di questa modifica.

Vedere anche