Compatibilità tra le versioni in .NET FrameworkVersion compatibility in the .NET Framework

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.Backward compatibility means that an app that was developed for a particular version of a platform will run on later versions of that platform. .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.The .NET Framework tries to maximize backward compatibility: Source code written for one version of the .NET Framework should compile on later versions of the .NET Framework, and binaries that run on one version of the .NET Framework should behave identically on later versions of the .NET Framework.

Compatibilità tra le versioni per appVersion compatibility for apps

Per impostazione predefinita, un'app viene eseguita sulla versione di .NET Framework per cui è stata creata.By default, an app runs on the version of the .NET Framework that it was built for. 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.If that version isn't present and the app configuration file doesn't define supported versions, a .NET Framework initialization error may occur. In questo caso, il tentativo di esecuzione dell'app avrà esito negativo.In this case, the attempt to run the app will fail.

Per definire le versioni specifiche in cui viene eseguita l'app, aggiungere uno o più elementi <supportedRuntime> al file di configurazione dell'app.To define the specific versions on which your app runs, add one or more <supportedRuntime> elements to your app's configuration file. 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.Each <supportedRuntime> element lists a supported version of the runtime, with the first specifying the most preferred version and the last specifying the least preferred version.

<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.For more information, see How to: Configure an App to Support .NET Framework 4 or 4.x.

Compatibilità tra le versioni per componentiVersion compatibility for components

Un'app, diversamente da un componente, può controllare la versione di .NET Framework in cui viene eseguita.An app can control the version of the .NET Framework on which it runs, but a component can't. 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.Components and class libraries are loaded in the context of a particular app, and that's why they automatically run on the version of the .NET Framework that the app runs on.

A causa di questa restrizione, le garanzie di compatibilità sono particolarmente importanti per i componenti.Because of this restriction, compatibility guarantees are especially important for components. 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.Starting with the .NET Framework 4, you can specify the degree to which a component is expected to remain compatible across multiple versions by applying the System.Runtime.Versioning.ComponentGuaranteesAttribute attribute to that component. Gli strumenti possono usare questo attributo per rilevare le possibili violazioni della garanzia di compatibilità in versioni future di un componente.Tools can use this attribute to detect potential violations of the compatibility guarantee in future versions of a component.

Compatibilità con le versioni precedenti e .NET FrameworkBackward compatibility and the .NET Framework

.NET Framework 4.5 e versioni successive sono compatibili con le versioni precedenti delle app create con le versioni precedenti di .NET Framework.The .NET Framework 4.5 and later versions are backward-compatible with apps that were built with earlier versions of the .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.In other words, apps and components built with previous versions will work without modification on the .NET Framework 4.5 and later versions. 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.However, by default, apps run on the version of the common language runtime for which they were developed, so you may have to provide a configuration file to enable your app to run on the .NET Framework 4.5 or later versions. Per altre informazioni, vedere la sezione Compatibilità tra le versioni per app in questo articolo.For more information, see the Version compatibility for apps section earlier in this article.

In pratica, questa compatibilità può essere interrotta da modifiche apparentemente irrilevanti in .NET Framework e nelle tecniche di programmazione.In practice, this compatibility can be broken by seemingly inconsequential changes in the .NET Framework and changes in programming techniques. Ad esempio, i miglioramenti delle prestazioni in .NET Framework 4.5 possono esporre una race condition che non si era verificata nelle versioni precedenti.For example, performance improvements in the .NET Framework 4.5 can expose a race condition that did not occur on earlier versions. 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.Similarly, using a hard-coded path to .NET Framework assemblies, performing an equality comparison with a particular version of the .NET Framework, and getting the value of a private field by using reflection are not backward-compatible practices. 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.In addition, each version of the .NET Framework includes bug fixes and security-related changes that can affect the compatibility of some apps and components.

Se l'app o il componente non funziona come previsto in .NET Framework 4.5 (e versioni intermedie: .NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 o 4.8), usare gli elenchi di controllo seguenti:If your app or component doesn't work as expected on the .NET Framework 4.5 (including its point releases, the .NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, or 4.8), use the following checklists:

Compatibilità ed esecuzione affiancataCompatibility and side-by-side execution

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.If you can't find a suitable workaround for your issue, remember that the .NET Framework 4.5 (or one of its point releases) runs side by side with versions 1.1, 2.0, and 3.5, and is an in-place update that replaces version 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.For apps that target versions 1.1, 2.0, and 3.5, you can install the appropriate version of the .NET Framework on the target machine to run the app in its best environment. Per altre informazioni sull'esecuzione side-by-side, vedere Esecuzione side-by-side.For more information about side-by-side execution, see Side-by-Side Execution.

Vedere ancheSee also