Distribuzione di Universal CRT

Da Visual Studio .NET a Visual Studio 2013, ogni versione principale del compilatore e degli strumenti C++ includeva una nuova versione autonoma della libreria di runtime C (CRT) di Microsoft. Queste versioni autonome della libreria CRT erano indipendenti l'una dall'altra e, a vari livelli, erano incompatibili tra loro. La libreria CRT, ad esempio, usata da Visual Studio 2012, corrispondeva alla versione 11, denominata msvcr110.dll, e la libreria CRT usata da Visual Studio 2013 corrispondeva alla versione 12, denominata msvcr120.dll. A partire da Visual Studio 2015, non è più così. Visual Studio 2015 e le versioni successive di Visual Studio usano tutte una sola libreria Universal CRT.

Universal CRT (UCRT) è un componente del sistema operativo Microsoft Windows. È incluso come parte del sistema operativo in Windows 10 o versione successiva e Windows Server 2016 o versione successiva. UCRT è disponibile tramite Windows Update nei sistemi operativi meno recenti ancora in supporto esteso. La distribuzione locale di Universal CRT è supportata, con alcune restrizioni.

Distribuzione centrale

Il metodo preferito per l'installazione centrale di Universal CRT consiste nell'uso di Microsoft Windows Update. Universal CRT è un aggiornamento consigliato per tutti i sistemi operativi Microsoft Windows supportati che viene quindi installato per impostazione predefinita dalla maggior parte dei computer nell'ambito del processo di aggiornamento normale. La versione iniziale di Universal CRT è stata KB2999226. Un aggiornamento successivo con varie correzioni di bug è stato apportato in KB3118401 e sono stati apportati altri aggiornamenti con ulteriori correzioni di bug e nuove funzionalità. Per gli aggiornamenti più recenti, cercare support.microsoft.com "Universal C Runtime" o "Universal CRT".

Non tutti i computer Microsoft Windows installano regolarmente gli aggiornamenti tramite Windows Update e in alcuni potrebbero non essere installati tutti gli aggiornamenti consigliati. Per supportare l'uso delle applicazioni compilate usando i set di strumenti C++ di Visual Studio 2015 e versioni successive in tali computer, sono disponibili file ridistribuibili CRT universali per la distribuzione offline. Questi file ridistribuibili possono essere scaricati da uno dei collegamenti kb precedenti. Universal CRT Redistributable richiede che il computer sia stato aggiornato al Service Pack corrente. Il componente ridistribuibile per Windows 7, ad esempio, può essere installato solo in Windows 7 SP1, non in Windows 7 RTM.

Universal CRT è una dipendenza fondamentale delle librerie C++. Visual C++ Redistributable (VCRedist) installa la versione iniziale di Universal CRT (versione 10.0.10240) nei computer che non ne hanno già uno installato. Questa versione è sufficiente per soddisfare le dipendenze della libreria C++. Se l'applicazione dipende da una versione più recente di Universal CRT, è necessario usare Windows Update per aggiornare completamente il computer. In alternativa, installare tale versione di UCRT in modo esplicito. È consigliabile installare Universal C Runtime usando Windows Update o una MSU prima di installare VCRedist. Questo ordine di installazione consente di evitare più riavvii necessari.

Non tutti i sistemi operativi sono idonei per il runtime C universale più recente tramite Windows Update. In Windows 10 o Windows 11 la versione distribuita centralmente corrisponde alla versione del sistema operativo. Per aggiornare ulteriormente Universal C Runtime, è necessario aggiornare il sistema operativo. Per Windows Vista tramite Windows 8.1, la versione più recente disponibile di Universal C Runtime è basata sull'aggiornamento dell'anniversario di Windows 10 (versione 10.0.14393).

Distribuzione locale

La distribuzione locale della libreria Universal CRT è supportata ma non consigliata per motivi di prestazioni e di sicurezza. Le DLL per la distribuzione locale sono incluse come parte di Windows SDK, nella sottodirectory, dall'architettura Windows Kits\10\Redist\ucrt\DLLs del computer. Le DLL necessarie includono ucrtbase.dll e un set di DLL del server d'inoltro APISet denominate api-ms-win-*.dll. Il set di DLL necessarie in ogni sistema operativo varia. È consigliabile includere tutte le DLL quando si esegue la distribuzione in locale.

Ci sono due limitazioni alla distribuzione locale da tenere presenti:

  • In Windows 10 e Windows 11 viene sempre usato universal CRT nella directory di sistema, anche se un'applicazione include una copia locale dell'applicazione di Universal CRT.On Windows 10 and Windows 11, the Universal CRT in the system directory is always used, even if an application-local copy of the Universal CRT. È vero anche quando la copia locale è più recente, perché Universal CRT è un componente del sistema operativo principale in Windows 10 e versioni successive.

  • Versioni di Windows precedenti a Windows 8: il CRT universale non può essere incluso in un pacchetto in locale con un plug-in, se si trova ovunque ma nella directory eseguibile principale dell'app. Le DLL del server d'inoltro APISet non sono in grado di risolvere correttamente ucrtbase.dll in questo caso. Ecco alcune soluzioni alternative consigliate:

    • Collegare la libreria Universal CRT in modo statico
    • Distribuire centralmente la libreria Universal CRT
    • Inserire i file della libreria Universal CRT nella stessa directory dell'app.

Distribuzione in Microsoft Windows XP

I set di strumenti di Visual Studio 2015 e Visual Studio 2017 continuano a supportare lo sviluppo di software da usare in Microsoft Windows XP. È disponibile una versione di Universal CRT per Microsoft Windows XP. Il sistema operativo Microsoft Windows XP non è più incluso nel supporto mainstream o esteso. Pertanto, la distribuzione centrale di Universal CRT in Microsoft Windows XP è diversa da altri sistemi operativi.

Quando Visual C++ Redistributable è installato in Windows XP, installa direttamente universalmente CRT e tutte le relative dipendenze nella directory di sistema. Non viene installato o dipende da windows Update. I moduli merge ridistribuibili, i Microsoft_VC<version>_CRT_<target>.msm file, eseguono la stessa operazione.

La distribuzione locale di Universal CRT in Windows XP è la stessa di altri sistemi operativi supportati.

Importante

Il supporto della libreria di runtime per Windows XP non è più disponibile nella versione più recente Visual C++ Redistributable per Visual Studio 2015, 2017, 2019 e 2022. L'ultimo ridistribuibile per supportare Windows XP è la versione 16.7 (file versione 14.27.29114.0). Se le app di Windows XP vengono distribuite o aggiornate a una versione successiva della ridistribuibile, le app non verranno eseguite. Per altre informazioni e come ottenere una versione del ridistribuibile che supporta Windows XP, vedere Configurazione di programmi per Windows XP.

Vedi anche