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.
La compatibilità con le versioni precedenti significa che un'app sviluppata per una determinata versione di una piattaforma verrà eseguita in versioni successive di tale 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 in versioni successive di .NET Framework e i file binari eseguiti in una versione di .NET Framework devono comportarsi in modo identico nelle versioni successive di .NET Framework.
Compatibilità delle versioni per le app
Per impostazione predefinita, un'app viene eseguita nella versione di .NET Framework per cui è stata compilata. Se tale versione non è presente e il file di configurazione dell'app non definisce le versioni supportate, potrebbe verificarsi un errore di inizializzazione di .NET Framework. In questo caso, il tentativo di eseguire l'app avrà esito negativo.
Per definire le versioni specifiche in cui viene eseguita l'app, aggiungere uno o più <elementi SupportedRuntime> al file di configurazione dell'app. Ogni <supportedRuntime>
elemento elenca una versione supportata del runtime, con la prima specifica la versione preferita e l'ultima che specifica la versione meno preferita.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Per altre informazioni, vedere Procedura: Configurare un'app per supportare .NET Framework 4 o 4.x.
Compatibilità delle versioni per i componenti
Un'app può controllare la versione di .NET Framework in cui viene eseguita, ma un componente non può. I componenti e le librerie di classi vengono caricati nel contesto di una determinata app ed è per questo che vengono eseguiti automaticamente nella versione di .NET Framework in cui viene eseguita l'app.
A causa di questa restrizione, le garanzie di compatibilità sono particolarmente importanti per i componenti. A partire da .NET Framework 4, è possibile specificare il grado di compatibilità di un componente tra più versioni applicando l'attributo System.Runtime.Versioning.ComponentGuaranteesAttribute a tale componente. Gli strumenti possono usare questo attributo per rilevare potenziali violazioni della garanzia di compatibilità nelle versioni future di un componente.
Compatibilità con le versioni precedenti
.NET Framework 4.5 e versioni successive sono compatibili con le versioni precedenti delle app compilate con le versioni precedenti di .NET Framework. In altre parole, le app e i componenti compilati con le versioni precedenti funzioneranno senza modifiche in .NET Framework 4.5 e versioni successive. Tuttavia, per impostazione predefinita, le app vengono eseguite nella versione di Common Language Runtime per cui sono state sviluppate, quindi potrebbe essere necessario fornire un file di configurazione per consentire l'esecuzione dell'app in .NET Framework 4.5 o versioni successive. Per altre informazioni, vedere la sezione Compatibilità delle versioni per le app più indietro in questo articolo.
In pratica, questa compatibilità può essere interrotta da modifiche apparentemente inconsequentiali in .NET Framework e modifiche nelle tecniche di programmazione. Ad esempio, i miglioramenti delle prestazioni nel .NET Framework 4.5 possono esporre una race condition (condizione di gara) che non si è verificata nelle versioni precedenti. Analogamente, utilizzare un percorso codificato staticamente per gli assembly .NET Framework, confrontare l'uguaglianza con una particolare versione di .NET Framework e ottenere il valore di un campo privato mediante riflessione non sono pratiche compatibili con le versioni precedenti. Inoltre, ogni versione di .NET Framework include correzioni di bug e modifiche correlate alla sicurezza che possono influire sulla compatibilità di alcune app e componenti.
Se l'app o il componente non funziona come previsto in .NET Framework 4.5 o versione successiva, usare gli elenchi di controllo seguenti:
Se l'app è stata sviluppata per l'esecuzione in qualsiasi versione di .NET Framework a partire da .NET Framework 4.0, vedere Compatibilità delle applicazioni per generare elenchi di modifiche tra la versione di .NET Framework di destinazione e la versione in cui è in esecuzione l'app.
Se si dispone di un'app .NET Framework 3.5, vedere anche Problemi di migrazione di .NET Framework 4.
Se si dispone di un'app .NET Framework 2.0, vedere anche Modifiche in .NET Framework 3.5 SP1.
Se si dispone di un'app .NET Framework 1.1, vedere anche Modifiche in .NET Framework 2.0.
Se si ricompila il codice sorgente esistente per l'esecuzione in .NET Framework 4.5 o nelle versioni intermedie oppure se si sta sviluppando una nuova versione di un'app o di un componente destinato a .NET Framework 4.5 o alle relative versioni intermedie da una code base di codice sorgente esistente, vedere What's Obsolete in the Class Library for obsolete types and members (Elementi obsoleti nella libreria di classi per tipi e membri obsoleti). e applicare la soluzione alternativa descritta. Il codice compilato in precedenza continuerà a essere eseguito su tipi e membri contrassegnati come obsoleti.
Se si determina che una modifica in .NET Framework 4.5 ha interrotto l'app, controllare lo schema delle impostazioni di runtime e in particolare l'elemento< AppContextSwitchOverrides> per determinare se è possibile usare un'impostazione di runtime nel file di configurazione dell'app per ripristinare il comportamento precedente.
Se si verifica un problema non documentato, aprire un problema nel sito della community degli sviluppatori per .NET o aprire un problema nel repository GitHub Microsoft/dotnet.
Esecuzione affiancata
Se non è possibile trovare una soluzione alternativa appropriata per il problema, tenere presente che .NET Framework 4.5 (o una delle relative versioni intermedie) viene eseguito side-by-side con le versioni 1.1, 2.0 e 3.5 ed è un aggiornamento sul posto che sostituisce la versione 4. Per le app destinate alle versioni 1.1, 2.0 e 3.5, è possibile installare la versione appropriata di .NET Framework nel computer di destinazione per eseguire l'app nel suo ambiente migliore. Per ulteriori informazioni sull'esecuzione affiancata, vedere Esecuzione affiancata.
Vedere anche
- Novità
- Elementi obsoleti nella libreria di classi
- di compatibilità delle applicazioni
- Criteri di supporto ufficiali di .NET Framework
- Problemi di migrazione di .NET Framework 4