Distribuzione in Visual C++

L'installazione dell'applicazione in un computer diverso dal computer di sviluppo è nota con il nome di distribuzione. Quando si distribuisce un'applicazione Visual C++ in un altro computer, è necessario installare sia l'applicazione che gli eventuali file di libreria da cui dipende. In Visual Studio sono disponibili tre modi per distribuire le librerie di Visual C++ insieme all'applicazione: distribuzione centrale, distribuzione locale e collegamento statico. La distribuzione centrale inserisce i file di libreria nella directory di Windows, in cui tutte le applicazioni possono accedervi automaticamente. Con la distribuzione locale i file di libreria vengono inseriti nella stessa directory dell'applicazione. Per aggiornarli, è necessario ridistribuire eventuali librerie distribuite localmente. Con il collegamento statico il codice di libreria viene associato all'applicazione. È necessario ricompilare e ridistribuire l'applicazione per sfruttare tutti gli aggiornamenti delle librerie quando si usa il collegamento statico.

In Visual Studio 2015, la libreria di runtime C Microsoft è stata sottoposta a refactoring in componenti di libreria locali specifici della versione e in una nuova libreria Universal C Runtime che fa ora parte di Windows. Per informazioni dettagliate sulla distribuzione della libreria Universal CRT, vedere Distribuzione di Universal CRT.

Distribuzione centrale

Nella distribuzione centrale, i file DLL della Windows\System32 libreria vengono installati nella directory o per i file di libreria a 32 bit nei sistemi x64, la Windows\SysWow64 directory . I file di libreria distribuiti centralmente sono disponibili per altre applicazioni.

Per distribuire centralmente le librerie di Visual C++, è possibile usare una di queste due origini per i file da installare:

  • File di pacchetto ridistribuibili. Questi file sono eseguibili da riga di comando autonomi che contengono tutte le librerie Ridistribuibili di Visual C++ in formato compresso. I pacchetti ridistribuibili più recenti sono disponibili in Microsoft Visual C++ Redistributable Latest Supported Downloads.The latest Redistributable packages are available from Microsoft Visual C++ Redistributable Latest Supported Downloads. Quando si usano i pacchetti Ridistribuibili per la distribuzione centrale, Windows Update può eseguire il servizio indipendentemente dalle librerie.

  • Moduli merge ridistribuibili (.msm file) che è possibile includere nel file Windows Installer (.msi) dell'applicazione. Questo metodo è deprecato perché le librerie distribuite in questo modo non possono essere aggiornate automaticamente da Windows Update. Per altre informazioni, vedere Ridistribuzione tramite moduli di merge.

Un file di pacchetto ridistribuibile installa tutte le librerie di Visual C++ per una particolare architettura di sistema. Ad esempio, se l'applicazione è compilata per x64, è possibile usare il vcredist_x64.exe pacchetto per installare tutte le librerie di Visual C++ usate dall'applicazione. È possibile programmare il programma di installazione dell'applicazione per eseguire il pacchetto come prerequisito prima di installare l'applicazione.

La distribuzione centrale tramite un pacchetto Ridistribuibile consente a Windows Update di aggiornare automaticamente le librerie di Visual C++. Per una maggiore sicurezza e funzionalità, è consigliabile usare le DLL di libreria nell'applicazione anziché le librerie statiche e usare pacchetti ridistribuibili e distribuzione centrale anziché la distribuzione locale.

Distribuzione locale

Nella distribuzione locale, i file di libreria vengono installati nella cartella dell'applicazione insieme al file eseguibile. Le diverse versioni delle librerie Ridistribuibili di Visual C++ possono essere installate nella stessa cartella perché il nome file di ogni versione include il numero di versione. Ad esempio, la versione 12 della libreria di runtime C++ è msvcp120.dlle la versione 14 è msvcp140.dll.

Le espansioni in una libreria possono essere distribuite tra più DLL aggiuntive, note come librerie di punti. Ad esempio, alcune funzionalità della libreria standard rilasciata in Visual Studio 2017 versione 15.6 sono state aggiunte in msvcp140_1.dllper mantenere la compatibilità ABI di msvcp140.dll. Se si usa Visual Studio 2017 versione 15.6 (set di strumenti 14.13) o versioni successive, potrebbe essere necessario distribuire in locale sia queste librerie punto che la libreria principale. Queste librerie di punti separate verranno aggiunte alla libreria di base, quando l'interfaccia ABI cambia.

Poiché Microsoft non è in grado di aggiornare automaticamente le librerie di Visual C++ distribuite in locale, non è consigliabile distribuire localmente queste librerie. Se si decide di usare la distribuzione locale delle librerie Redistributable, è consigliabile implementare il proprio metodo per aggiornare automaticamente le librerie distribuite localmente.

Collegamento statico

Oltre alle librerie a collegamento dinamico, Visual Studio fornisce la maggior parte delle proprie librerie sotto forma di librerie statiche. È possibile collegare una libreria statica in modo statico all'applicazione, in altre parole, collegare il codice oggetto della libreria direttamente nell'applicazione. Il collegamento statico crea un singolo file binario senza una dipendenza DLL, in modo che non sia necessario distribuire separatamente i file di libreria di Visual C++. Tuttavia, non è consigliabile questo approccio perché le librerie collegate in modo statico non possono essere aggiornate sul posto. Per aggiornare una libreria collegata quando si usa il collegamento statico, è necessario ricompilare e ridistribuire l'applicazione.

Risoluzione dei problemi di distribuzione

L'ordine di caricamento delle librerie di Visual C++ è dipendente dal sistema. Per diagnosticare i problemi del caricatore, usare depends.exe o where.exe. Per altre informazioni, vedere Ordine di ricerca della libreria a collegamento dinamico (Windows).For more information, see Dynamic-link library search order (Windows).

Vedi anche

Distribuzione di applicazioni desktop
Distribuzione Universal CRT