Determinare le DLL da ridistribuire

Quando si compila un'applicazione che usa librerie DLL fornite da Visual Studio, gli utenti che vogliono eseguire l'applicazione dovranno avere le stesse DLL nei propri computer. Poiché la maggior parte degli utenti probabilmente non dispone di Visual Studio installato, è necessario specificare queste DLL. Visual Studio rende queste DLL disponibili come file ridistribuibili che è possibile includere nel programma di installazione dell'applicazione.

Per semplificare l'inclusione delle DLL ridistribuibili con il programma di installazione, sono disponibili come pacchetti ridistribuibili autonomi. Questi pacchetti sono eseguibili specifici dell'architettura che usano la distribuzione centrale per installare i file ridistribuibili nel computer di un utente. Ad esempio, vc_redist.x86.exe installa le librerie a 32 bit per computer x86 e x64, vc_redist.x64.exe installa le librerie a 64 bit per i computer x64 e vcredist.ARM64.exe installa le librerie per i computer ARM e ARM64. È consigliabile usare la distribuzione centrale perché Microsoft può aggiornare in modo indipendente queste librerie tramite il servizio Windows Update. Oltre alla copia nell'installazione di Visual Studio, i pacchetti ridistribuibili correnti sono disponibili per il download. Per i collegamenti ai pacchetti ridistribuibili supportati più recenti per i set di strumenti correnti e precedenti, vedere Gli ultimi download supportati di Visual C++ Redistributable. È possibile trovare versioni precedenti specifiche dei pacchetti Ridistribuibili cercando my.visualstudio.com "Visual C++ Redistributable Packages".

Per semplificare l'inclusione delle DLL ridistribuibili con il programma di installazione, sono disponibili come pacchetti ridistribuibili autonomi. Questi pacchetti sono eseguibili specifici dell'architettura che usano la distribuzione centrale per installare i file ridistribuibili nel computer di un utente. Ad esempio, vcredist_x86.exe installa le librerie a 32 bit per computer x86 e x64, vcredist_x64.exe installa le librerie a 64 bit per i computer x64 e vcredist_ARM.exe installa le librerie per i computer ARM. È consigliabile usare la distribuzione centrale perché Microsoft può aggiornare in modo indipendente queste librerie tramite il servizio Windows Update. Oltre alla copia nell'installazione di Visual Studio, i pacchetti ridistribuibili correnti sono disponibili per il download. Per i collegamenti ai pacchetti ridistribuibili supportati più recenti sia per i set di strumenti correnti che per quelli meno recenti, vedere Download di Visual C++ supportati più recenti. È possibile trovare versioni precedenti specifiche dei pacchetti Ridistribuibili cercando my.visualstudio.com "Visual C++ Redistributable Packages".

È supportato solo l'uso di un pacchetto Ridistribuibile uguale o più recente rispetto alla versione del set di strumenti. Il numero di versione principale del pacchetto Ridistribuibile distribuito deve corrispondere alla versione del set di strumenti di Visual Studio usato per creare l'applicazione e la versione secondaria deve essere la stessa o successiva. Visual Studio 2022, 2019, 2017 e 2015 hanno tutti numeri di versione del set di strumenti compatibili . Per queste versioni, i file ridistribuibili di Visual Studio più recenti possono essere usati dalle app compilate da un set di strumenti da una versione precedente. Ad esempio, i file ridistribuibili di Visual Studio 2022 possono essere usati dalle app compilate usando il set di strumenti di Visual Studio 2017 o 2015. Anche se potrebbero essere compatibili, non è supportato l'uso di file ridistribuibili meno recenti nelle app compilate usando un set di strumenti più recente. Ad esempio, l'uso dei file ridistribuibili 2017 nelle app compilate con il set di strumenti 2019 non è supportato.

È anche possibile includere le DLL ridistribuibili con il programma di installazione nei moduli di merge. Questo metodo è ora deprecato perché le librerie distribuite in questo modo non possono essere aggiornate automaticamente da Windows Update. I moduli merge ridistribuibili o i moduli di Microsoft Installer (.msm file) sono componenti facoltativi disponibili nel Programma di installazione di Visual Studio. Quando sono installati, i moduli di merge per le DLL Ridistribuibili si trovano nella directory di installazione di Visual Studio in %VCToolsRedistDir%\MergeModules\. In Visual Studio 2015 e versioni precedenti di Visual Studio questi file si trovano nella directory Programmi o Programmi (x86) in una Common Files\Merge Modules sottodirectory. Per altre informazioni sull'uso di questi file, vedere Redistributing components by using Merge Modules.For more information about use these files, see Redistributing components by using Merge Modules.

Le singole DLL ridistribuibili sono incluse anche nell'installazione di Visual Studio. Per impostazione predefinita, vengono installati nelle cartelle visuali %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] , dove [architecture] rappresenta l'architettura di destinazione, [toolset] rappresenta la versione del set di strumenti e [library] rappresenta la libreria.

È anche possibile includere le DLL ridistribuibili con il programma di installazione nei moduli di merge. Questo metodo è ora deprecato perché le librerie distribuite in questo modo non possono essere aggiornate automaticamente da Windows Update. I moduli merge ridistribuibili per le DLL ridistribuibili si trovano nella directory Programmi o Programmi (x86) in una Common Files\Merge Modules sottodirectory. Per altre informazioni sull'uso di questi file, vedere Redistributing components by using Merge Modules.For more information about use these files, see Redistributing components by using Merge Modules.

Le singole DLL ridistribuibili sono incluse anche nell'installazione di Visual Studio. Per impostazione predefinita, vengono installati nella directory di installazione di Visual Studio 2015 nelle redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] cartelle, dove [architecture] rappresenta l'architettura di destinazione, [toolset] rappresenta la versione del set di strumenti ed [library] è la libreria di debug con le DLL di debug.

Usare la versione più recente di qualsiasi file DLL di libreria, pacchetto ridistribuibile o modulo di merge disponibile in queste directory. È possibile usare queste librerie per la distribuzione locale, installandole nella stessa directory dell'applicazione. La distribuzione locale non è consigliabile, perché in questo caso ci si assume la responsabilità del recapito degli aggiornamenti delle applicazioni distribuite. La distribuzione centrale tramite i pacchetti Ridistribuibili è preferibile.

Per determinare quali DLL è necessario ridistribuire con l'applicazione, raccogliere un elenco delle DLL da cui dipende l'applicazione. Queste DLL vengono in genere elencate come input della libreria di importazione nel linker. Alcune librerie, ad esempio vcruntime e UCRT (Universal C Runtime Library), sono incluse per impostazione predefinita. Se l'app o una delle relative dipendenze usa LoadLibrary per caricare dinamicamente una DLL, tale DLL potrebbe non essere elencata negli input del linker. Un modo per raccogliere l'elenco delle DLL caricate dinamicamente consiste nell'eseguire Dependency Walker (depends.exe) nell'app, come descritto in Informazioni sulle dipendenze di un'applicazione Visual C++. Questo strumento, tuttavia, è obsoleto e potrebbe segnalare che non riesce a trovare alcune DLL.

Quando si dispone dell'elenco delle dipendenze, confrontarlo con l'elenco collegato nel file presente nella Redist.txt directory di installazione di Microsoft Visual Studio. In alternativa, nell'elenco "REDIST" delle DLL ridistribuibili a cui si fa riferimento nella sezione "File di codice distribuibile" delle Condizioni di licenza software Microsoft per la copia di Visual Studio. Per Visual Studio 2022, vedere Codice distribuibile per Visual Studio 2022. Per Visual Studio 2019, vedere Codice distribuibile per Visual Studio 2019. Per Visual Studio 2017, vedere Codice distribuibile per Microsoft Visual Studio 2017 (inclusi utilità, estendibilità e file del server di compilazione). Per Visual Studio 2015, vedere Codice distribuibile per Microsoft Visual Studio 2015 e Microsoft Visual Studio 2015 SDK (inclusi utilità e file del server di compilazione). Per Visual Studio 2013, l'elenco è disponibile online in Distributable Code for Microsoft Visual Studio 2013 and Microsoft Visual Studio 2013 SDK (Codice distribuibile per Microsoft Visual Studio 2013 e Microsoft Visual Studio 2013 SDK).

Nelle versioni di Visual Studio precedenti a Visual Studio 2015, la libreria di runtime C (CRT) è stata inclusa come DLL ridistribuibile, in msvc[version].dll. In Visual Studio 2015 le funzioni in CRT sono state refactoring in vcruntime e UCRT. UCRT è ora un componente di sistema in Windows 10 e versioni successive, gestito da Windows Update. È disponibile in tutti i sistemi operativi Windows 10 e versioni successive. Per distribuire l'applicazione a sistemi operativi precedenti, può essere necessario ridistribuire anche la libreria UCRT. Una versione iniziale di UCRT è inclusa nei file ridistribuibili di Visual Studio. Questa versione viene installata solo nei sistemi operativi precedenti a Windows 10 e solo se non è già installata alcuna versione di UCRT. Per una versione installabile della libreria UCRT per i sistemi di livello inferiore come pacchetto di aggiornamento di sistema Microsoft, vedere Windows 10 Universal C Runtime nell'Area download Microsoft.

Non è possibile ridistribuire tutti i file inclusi in Visual Studio. È consentito ridistribuire solo i file specificati in Redist.txt o nell'elenco "REDIST" online. Non è anche possibile ridistribuire le versioni di debug delle applicazioni o le versioni di debug delle DLL o delle librerie fornite da Microsoft. È possibile copiare solo file eseguibili e librerie di debug nei computer usati per il test. Per altre informazioni, vedere Scelta di un metodo di distribuzione.

Nella tabella seguente vengono descritte alcune DLL di Visual C++ da cui l'applicazione potrebbe dipendere.

Libreria di Visual C++ Descrizione Si applica a
vcruntime[version].dll Libreria di runtime per codice nativo. Applicazioni che usano i servizi di avvio e terminazione normali dei linguaggi C e C++ normali.
vccorlib[version].dll Libreria di runtime per codice gestito. Applicazioni che usano i servizi del linguaggio C++ per il codice gestito.
msvcp[version].dll e msvcp[version_dotnumber].dll Libreria C++ standard per codice nativo. Applicazioni che usano la libreria C++ standard.
concrt[version].dll Libreria di runtime di concorrenza per codice nativo. Applicazioni che usano il runtime di concorrenza.
mfc[version].dll Libreria MFC. Applicazioni che usano la libreria MFC.
mfc[version][language].dll Risorse della libreria MFC. Applicazioni che usano risorse di lingua specifiche per MFC.
mfc[version]u.dll Libreria MFC con supporto Unicode. Applicazioni che usano la libreria MFC e richiedono il supporto per Unicode.
mfcmifc80.dll Libreria di interfacce gestite MFC. Applicazioni che usano la libreria MFC con Controlli Windows Form.
mfcm[version].dll Libreria gestita MFC. Applicazioni che usano la libreria MFC con Controlli Windows Form.
mfcm[version]u.dll Libreria gestita MFC con supporto Unicode. Applicazioni che usano la libreria MFC con Controlli Windows Form e richiedono il supporto per Unicode.
vcamp[version].dll Libreria AMP per codice nativo. Applicazioni che usano il codice della libreria AMP C++.
vcomp[version].dll Libreria OpenMP per codice nativo. Applicazioni che usano il codice della libreria OpenMP C++.

Nota

Non è più necessario ridistribuire Active Template Library come DLL separata. Le sue funzionalità sono state spostate in intestazioni e in una libreria statica.

Per altre informazioni su come ridistribuire queste DLL con l'applicazione, vedere Ridistribuzione di file di Visual C++. Per esempi, vedere Esempi di distribuzione.

In genere, non è necessario ridistribuire le DLL di sistema perché fanno parte del sistema operativo. Possono tuttavia verificarsi eccezioni, ad esempio quando l'applicazione verrà eseguita in versioni diverse dei sistemi operativi Microsoft. In questo caso, assicurarsi di leggere le Condizioni di licenza corrispondenti. Provare anche a ottenere le DLL di sistema aggiornate tramite Windows Update, Service Pack o usando pacchetti Ridistribuibili resi disponibili da Microsoft.

Vedi anche

Scelta di un metodo di distribuzione
Distribuzione di applicazioni desktop