Compatibilità tra le versioni in .NET Framework

Per compatibilità con le versioni precedenti si intende che un'applicazione sviluppata per una particolare versione di una piattaforma sarà eseguita su versioni successive di quella piattaforma. .NET Framework tenta di ottimizzare la compatibilità con le versioni precedenti: il codice sorgente scritto per una versione di .NET Framework deve essere compilato su versioni successive di .NET Framework e i file binari in esecuzione su una versione di .NET Framework devono comportarsi in modo analogo nelle versioni successive di .NET Framework.

Compatibilità delle versioni per le applicazioni

Per impostazione predefinita, un'applicazione viene eseguita sulla versione di .NET Framework per cui è stata compilata. Se quella versione non è presente e il file di configurazione dell'applicazione non definisce le versioni supportate, è possibile che si verifichi un errore di inizializzazione di .NET Framework. In questo caso, non riuscirà il tentativo di eseguire l'applicazione.

Per definire le versioni specifiche su cui viene eseguita l'applicazione, aggiungere uno o più elementi <supportedRuntime> al file di configurazione dell'applicazione. Ogni elemento <supportedRuntime> elenca una versione supportata del runtime, con il primo che specifica la versione preferita e l'ultimo che specifica l'ultima versione nell'elenco delle preferenze.

Compatibilità delle versioni per i componenti

Un'applicazione è in grado di controllare la versione di .NET Framework sulla quale viene eseguita, diversamente da un componente. I componenti e librerie di classi sono caricati nel contesto di un'applicazione particolare e pertanto sono eseguiti automaticamente sulla versione di .NET Framework su cui è in esecuzione l'applicazione.

A causa di questa restrizione, le garanzie di compatibilità sono particolarmente importanti per i componenti. A partire da .NET Framework versione 4, è possibile specificare quanto un componente deve continuare a essere compatibile in più versioni applicando l'attributo System.Runtime.Versioning.ComponentGuaranteesAttribute a quel componente. Gli strumenti possono utilizzare questo attributo per rilevare le possibili violazioni della garanzia di compatibilità in versioni future di un componente.

Compatibilità con le versioni precedenti e .NET Framework 4

.NET Framework 4 è compatibile con le applicazioni precedenti compilate con le versioni di .NET Framework 1.1, 2.0, 3.0 e 3.5. In altre parole, le applicazioni e i componenti compilati con le versioni precedenti di .NET Framework funzioneranno su .NET Framework 4.

Tuttavia, in pratica, questa compatibilità può essere interrotta da modifiche apparentemente irrilevanti in .NET Framework e nelle tecniche di programmazione. Ad esempio, i miglioramenti nelle prestazioni in .NET Framework 4 possono esporre una race condition che non si era verificata nelle versioni precedenti. Allo stesso modo, l'utilizzo di un percorso hardcoded per gli assembly .NET Framework, l'esecuzione di un confronto delle uguaglianze con una particolare versione di .NET Framework e l'acquisizione del valore di un campo privato tramite reflection non sono pratiche compatibili con le versioni precedenti. Inoltre, ogni versione di .NET Framework include correzioni dei bug e modifiche correlate alla sicurezza che possono interessare la compatibilità di alcune applicazioni e componenti.

È necessario verificare le applicazioni e i componenti .NET Framework per assicurarsi che siano compatibili con le altre versioni di .NET Framework. Per assicurarsi che un'applicazione o un componente sia in esecuzione correttamente su .NET Framework 4, utilizzare la sezione relativa alla procedura dettagliata di compatibilità delle applicazioni .NET Framework 4.

Se l'applicazione o il componente non funziona come previsto su .NET Framework 4, utilizzare i seguenti elenchi di controllo.

Per le applicazioni .NET Framework 2.0, 3.0 e 3.5:

  • Controllare Problemi relativi alla migrazione di .NET Framework 4 per qualsiasi modifica che potrebbe interessare l'applicazione e applicare la soluzione alternativa descritta.

  • Se si sta eseguendo la ricompilazione del codice sorgente esistente per l'esecuzione su .NET Framework 4 o se si sta sviluppando una nuova versione di un'applicazione o di un componente che è destinato a .NET Framework 4 da una codebase sorgente esistente, controllare Elementi obsoleti in .NET Framework per i tipi e i membri obsoleti e applicare la soluzione alternativa descritta. (Il codice compilato precedentemente continuerà a essere in esecuzione sui tipi e i membri contrassegnati come obsoleti).

  • Se si determina che una modifica in .NET Framework 4 ha interrotto l'applicazione, controllare Schema delle impostazioni dell'ambiente di esecuzione per decidere se è possibile utilizzare un'impostazione di runtime nel file di configurazione dell'applicazione per ripristinare il comportamento precedente.

  • Se si rileva un problema non documentato, segnalare un bug di Microsoft Connect e contattare netfxcf@microsoft.com con il numero del bug.

Per le applicazioni .NET Framework 1.1:

  • Controllare Problemi relativi alla migrazione di .NET Framework 4 per qualsiasi modifica che potrebbe interessare l'applicazione e applicare la soluzione alternativa descritta.

  • Verificare la sezione relativa alle modifiche in .NET Framework 3.5 SP1 e alle modifiche in .NET Framework 2.0 per le modifiche eseguite in queste versioni.

  • Se si sta eseguendo la ricompilazione del codice sorgente esistente per l'esecuzione su .NET Framework 4 o se si sta sviluppando una nuova versione di un'applicazione o di un componente destinato a .NET Framework 4 da una codebase sorgente esistente, controllare Elementi obsoleti in .NET Framework per i tipi e i membri obsoleti e applicare la soluzione alternativa descritta. (Il codice compilato precedentemente continuerà a essere in esecuzione sui tipi e i membri contrassegnati come obsoleti).

  • Se si determina che una modifica in .NET Framework 4 ha interrotto l'applicazione, controllare Schema delle impostazioni dell'ambiente di esecuzione per decidere se è possibile utilizzare un'impostazione di runtime nel file di configurazione dell'applicazione per ripristinare il comportamento precedente.

  • Se si rileva un problema non documentato, segnalare un bug di Microsoft Connect e contattare netfxcf@microsoft.com con il numero del bug.

Compatibilità ed esecuzione side-by-side

Se non si riesce a trovare una soluzione alternativa adatta al problema, ricordare che .NET Framework 4 è in esecuzione side-by-side alle versioni 1.1, 2.0 e 3.5. È possibile installare la versione appropriata di .NET Framework nel computer di destinazione per eseguire l'applicazione nel proprio ambiente migliore. Per ulteriori informazioni sull'esecuzione side-by-side, vedere Esecuzione affiancata di diverse versioni.

Vedere anche

Concetti

Novità di .NET Framework 4

Altre risorse

Elementi obsoleti in .NET Framework

criteri del ciclo di vita del supporto Microsoft .NET Framework

Problemi relativi alla migrazione di .NET Framework 4

Cronologia delle modifiche

Data

Cronologia

Motivo

Agosto 2010

Notare che si verifica un errore di inizializzazione di .NET Framework se non è installata una versione supportata di .NET Framework.

Correzione di bug nel contenuto.