Compatibilità delle versioni

Per compatibilità con le versioni precedenti si intende che un'app 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 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à tra le versioni per 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 esecuzione dell'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 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.

<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à tra le versioni per componenti

Un'app, diversamente da un componente, può controllare la versione di .NET Framework in cui viene eseguita. I componenti e le librerie di classi vengono caricati nel contesto di un'app specifica, ecco perché vengono eseguiti automaticamente nella versione di .NET Framework in cui è in esecuzione 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 livello di compatibilità di un componente in più versioni applicando l'attributo System.Runtime.Versioning.ComponentGuaranteesAttribute a tale componente. Gli strumenti possono usare questo attributo per rilevare le possibili violazioni della garanzia di compatibilità in 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 create con le versioni precedenti di .NET Framework. In altre parole, le app e i componenti creati con le versioni precedenti funzioneranno senza applicare alcuna modifica in .NET Framework 4.5 e versioni successive. Tuttavia, per impostazione predefinita, le app vengono eseguite sulla versione di Common Language Runtime per la quale sono state sviluppate, pertanto potrebbe essere necessario fornire un file di configurazione per far sì che l'app venga eseguita in .NET Framework 4.5 o versioni successive. Per altre informazioni, vedere la sezione Compatibilità tra le versioni per app in questo articolo.

In pratica, questa compatibilità può essere interrotta da modifiche apparentemente irrilevanti in .NET Framework e nelle tecniche di programmazione. Ad esempio, i miglioramenti delle prestazioni in .NET Framework 4.5 possono esporre una race condition che non si era verificata nelle versioni precedenti. Allo stesso modo, l'uso 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 di bug e modifiche correlate alla sicurezza che possono incidere 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:

Esecuzione side-by-side

Se non si riesce a trovare una soluzione alternativa adatta al problema, ricordare che .NET Framework 4.5 (e 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 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 nell'ambiente migliore. Per altre informazioni sull'esecuzione side-by-side, vedere Esecuzione side-by-side.

Vedi anche