Usare multitargeting nativo in Visual Studio per compilare progetti precedentiUse native multi-targeting in Visual Studio to build old projects

Normalmente si consiglia di aggiornare i progetti quando si installa la versione più recente di Visual Studio.Normally, we recommend that you update your projects when you install the latest version of Visual Studio. Il costo dell'aggiornamento di progetti e codice in genere è di gran lunga inferiore ai vantaggi offerti in termini di nuovo IDE, compilatore, librerie e strumenti.The cost of updating your projects and code is usually more than offset by the benefits of the new IDE, compiler, libraries, and tools. Tuttavia, è possibile che gli utenti non siano in grado di aggiornare alcuni progetti.However, we know that you may not be able to update some projects. I file binari possono essere associati a librerie o piattaforme più datate che per motivi di manutenzione non possono essere aggiornate.You may have binaries that are tied to older libraries or platforms that for maintenance reasons you can’t upgrade. Il codice può usare costrutti di linguaggio non standard che si interrompono se si passa a un compilatore più recente.Your code may use non-standard language constructs that would break if you moved to a more recent compiler. Il codice può basarsi su librerie di terze parti compilate per una versione specifica di Visual C++.Your code might rely on 3rd party libraries compiled for a specific version of Visual C++. Oppure si possono generare librerie per altri utenti che hanno come destinazione una specifica versione precedente di Visual C++.Or you may produce libraries for others that must target a specific older version of Visual C++.

Fortunatamente, è possibile usare Visual Studio 2017 e Visual Studio 2015 per compilare progetti destinati ai set di strumenti e alle librerie del compilatore meno recente.Fortunately, you can use Visual Studio 2017 and Visual Studio 2015 to build projects that target older compiler toolsets and libraries. Non è necessario aggiornare un progetto Visual Studio 2010, Visual Studio 2012, Visual Studio 2013 o Visual Studio 2015 per sfruttare i vantaggi offerti dalle nuove funzionalità nell'IDE:You don't have to upgrade a Visual Studio 2010, Visual Studio 2012, Visual Studio 2013, or Visual Studio 2015 project to take advantage of new features in the IDE:

  • Nuove funzionalità di refactoring di C++ e funzionalità sperimentali dell'editorNew C++ refactoring capabilities and editor experimental features
  • Nuova finestra Strumenti di diagnostica del debugger e finestra Elenco erroriNew Diagnostics tools debugger window and Error List window
  • Punti di interruzione rinnovati, finestra Eccezioni e nuova funzionalità PerfTipsRevamped breakpoints, exceptions window and new PerfTips
  • Nuovi strumenti di ricerca ed esplorazione del codiceNew code navigation and search tools
  • Nuove correzioni rapide di C++ ed estensioni di Productivity Power Tools.New C++ Quick fixes and the Productivity Power Tools extensions.

È anche possibile sviluppare progetti di Visual Studio 2008, ma non possono essere usati se non vengono modificati.You can also target Visual Studio 2008 projects, but they can't be used unchanged. Per informazioni dettagliate, vedere la sezione relativa a Visual Studio 2008.For details, see the Instructions for Visual Studio 2008 section.

Le versioni più recenti di Visual Studio supportano il multitargeting nativo e il round trip dei progetti.The latest versions of Visual Studio support native multi-targeting and round-tripping of projects. Il multitargeting nativo è la capacità dell'IDE più recente di eseguire la compilazione usando set di strumenti installati dalle versioni precedenti di Visual Studio.Native multi-targeting is the ability of the latest IDE to build using toolsets installed by previous versions of Visual Studio. Il round trip è la capacità dell'IDE più recente di caricare i progetti creati da una versione precedente dell'IDE senza apportare modifiche al progetto.Round-tripping is the ability of the latest IDE to load projects created by a previous IDE version without making any changes to the project. Se si installa la versione più recente di Visual Studio affiancata alla versione esistente, è possibile usare la nuova versione dell'IDE con il compilatore e gli strumenti dalla versione esistente per compilare i progetti.If you install the latest version of Visual Studio side-by-side with your existing version, you can use the new version of the IDE with the compiler and tools from the existing version to build your projects. Gli altri membri del team possono continuare a usare i progetti nella versione precedente di Visual Studio.Other members of your team can continue to use the projects in the older version of Visual Studio.

Quando si usa un set di strumenti più datato, è possibile usufruire di molte delle funzionalità IDE più recenti, ma non delle ultime innovazioni nel compilatore, nelle librerie e negli strumenti di compilazione di C++.When you use an older toolset, you can take advantage of many of the latest IDE features, but not the latest advances in the C++ compiler, libraries and build tools. Ad esempio, non sarà possibile applicare i nuovi miglioramenti della conformità del linguaggio, le nuove funzionalità di debug e di analisi del codice né ottenere la maggiore velocità di compilazione offerta dal set di strumenti più recente.For example, you won't be able to use the new language conformance improvements, new debugging and code analysis features, or get the faster build throughput of the latest toolset. Esistono inoltre alcune funzionalità IDE che non sono compatibili con i set di strumenti precedenti.There are also some IDE features that are incompatible with older toolsets. Ad esempio, le informazioni sul tipo possono risultare mancanti nel profiler della memoria e l'operazione di refactoring Converti in valore letterale stringa non elaborata genera un codice conforme a C++11 che non verrà compilato quando si usa Visual Studio 2012 o un set di strumenti più datato.For example, type information may be missing in the Memory Profiler, and the refactoring operation Convert to Raw string literals generates C++11-compliant code that won't compile when you use Visual Studio 2012 or older toolsets.

Come usare multitargeting nativo in Visual StudioHow to use native multi-targeting in Visual Studio

Dopo aver installato Visual Studio affiancato alla versione meno recente, aprire il progetto esistente nella nuova versione di Visual Studio.Once you have installed Visual Studio side-by-side with your older version, open your existing project in the new version of Visual Studio. Quando viene caricato il progetto Visual Studio chiede se si vuole aggiornarlo in modo che usi il compilatore e librerie C++ più recenti.When the project is loaded, Visual Studio asks you whether you want to upgrade it to use the latest C++ compiler and libraries. Poiché si vuole mantenere il compilatore e le librerie precedenti per il progetto, scegliere il pulsante Annulla.Since you want the project to keep the older compiler and libraries, choose the Cancel button.

Visual Studio è persistente riguardo all'aggiornamento del progetto.Visual Studio is persistent about upgrading your project. Per evitare di visualizzare la finestra di dialogo dell'aggiornamento ogni volta che si carica il progetto, è possibile definire la seguente proprietà nei progetti o nel file PROPS o TARGET importati:To avoid seeing the upgrade dialog every time you load the project, you can define the following property in your projects, or in the .props or .targets files they import:

<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>

È necessario rimuovere questa proprietà quando si decide di aggiornare i progetti.You must remove this property when you want to upgrade your projects.

Se si sceglie di non eseguire l'aggiornamento, Visual Studio non apporta modifiche ai file della soluzione o del progetto.If you choose not to upgrade, Visual Studio makes no changes to your solution or project files. Quando si compila il progetto, i file binari generati sono completamente compatibili con quelli compilati con la versione precedente di Visual Studio.When you build the project, the generated binaries are fully compatible with the ones you built with the older version of Visual Studio. Ciò avviene perché Visual Studio usa lo stesso compilatore C++ e collega le stesse librerie accluse alla versione precedente dell'IDE.This is because Visual Studio uses the same C++ compiler and links the same libraries that your older IDE shipped with. Un altro motivo è che la finestra di dialogo dell'aggiornamento suggerisce di mantenere la versione precedente di Visual Studio installata se si sceglie Annulla.That is also why the upgrade dialog warns you to keep the older Visual Studio version installed if you choose Cancel.

Istruzioni per Visual Studio 2008Instructions for Visual Studio 2008

Visual Studio 2008 usava un proprio sistema di compilazione dedicato per C++ denominato VCBuild.Visual Studio 2008 had its own dedicated build system for C++ called VCBuild. A partire da Visual Studio 2010, progetti di Visual C++ sono stati modificati in modo da usare MSBuild.Starting in Visual Studio 2010, Visual C++ projects were changed to use MSBuild. Ciò significa che è necessario eseguire un'operazione di aggiornamento per compilare i progetti di Visual Studio 2008 nella versione più recente di Visual Studio.This means that you must go through an update step to build your Visual Studio 2008 projects in the latest version of Visual Studio. Il progetto aggiornato genera ancora i file binari completamente compatibili con i file binari creati usando l'IDE di Visual Studio 2008.Your updated project still generates binaries that are fully compatible with binaries created using the Visual Studio 2008 IDE.

Per prima cosa, oltre alla versione corrente di Visual Studio, è necessario installare Visual Studio 2010 nello stesso computer di Visual Studio 2008.First, in addition to the current version of Visual Studio, you must install Visual Studio 2010 on the same computer as Visual Studio 2008. Solo Visual Studio 2010 installa gli script MSBuild richiesti per i progetti di Visual Studio 2008.Only Visual Studio 2010 installs the MSBuild scripts that are required to target Visual Studio 2008 projects.

Successivamente, è necessario aggiornare la soluzione e i progetti di Visual Studio 2008 alla versione corrente di Visual Studio.Next, you must update your Visual Studio 2008 solution and projects to the current version of Visual Studio. È consigliabile creare un backup dei progetti e dei file della soluzione prima dell'aggiornamento.We recommend you create a backup of your projects and solution files before the upgrade. Per avviare il processo di aggiornamento, aprire la soluzione nella versione corrente di Visual Studio.To start the upgrade process, open the solution in the current version of Visual Studio. Quando si riceve una richiesta di aggiornamento, esaminare le informazioni presentate e quindi scegliere OK per avviare l'aggiornamento.When you get the upgrade prompt, review the information presented, and then choose OK to start the upgrade. Se la soluzione include più progetti, è necessario aggiornare ogni progetto. La procedura guidata crea i nuovi file di progetto VCXPROJ affiancati ai file VCPROJ esistenti.If you have more than one project in the solution, you must update The wizard creates new .vcxproj project files side-by-side with the existing .vcproj files. Purché sia disponibile anche una copia del file SLN originale, l'aggiornamento non ha altro impatto sui progetti di Visual Studio 2008 già esistenti.As long as you also have a copy of the original .sln file, the upgrade has no other impact on your existing Visual Studio 2008 projects.

Al termine dell'aggiornamento, se il report del log contiene errori o avvisi per uno dei progetti, esaminarli attentamente.When the upgrade completes, if the log report has errors or warnings for any of your projects, review them carefully. La conversione da VCBuild a MSBuild può causare problemi.The conversion from VCBuild to MSBuild can cause issues. Assicurarsi di comprendere e implementare le azioni indicate nel report.Make sure you understand and implement any action items listed in the report. Per altre informazioni sul report di log dell'aggiornamento e i problemi che possono verificarsi durante la conversione da VCBuild a MSBuild, vedere il post di blog relativo al multitargeting nativo di C++.For more information on the upgrade log report and issues that may occur when converting VCBuild to MSBuild, see this C++ Native Multi-Targeting blog post.

Al termine dell'aggiornamento del progetto, dopo avere risolto eventuali problemi nel file di log, la soluzione fa riferimento al set di strumenti più recente.When the project upgrade is completed, and you have corrected any issues in the log file, your solution actually targets the latest toolset. Come passaggio finale, modificare le proprietà per ogni progetto della soluzione in modo che venga usato il set di strumenti di Visual Studio 2008.As the final step, change the properties for each project in the solution to use the Visual Studio 2008 toolset. Con la soluzione caricata nella versione corrente di Visual Studio, per ogni progetto nella soluzione, aprire la finestra di dialogo Pagine delle proprietà del progetto, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e quindi selezionare Proprietà.With the solution loaded in the current version of Visual Studio, for each project in the solution, open the Project Property Pages dialog box: Right-click on the project in Solution Explorer and then select Properties. Nella finestra di dialogo Pagine delle proprietà modificare il valore dell'elenco a discesa Configurazione impostandolo su Tutte le configurazioni.In the Property Pages dialog box, change the Configuration drop-down value to All Configurations. In Proprietà di configurazione selezionare Generale e quindi impostare Set strumenti della piattaforma su Visual Studio 2008 (v90).In Configuration Properties, select General, and then change Platform Toolset to Visual Studio 2008 (v90).

Dopo questa modifica il compilatore e le librerie di Visual Studio 2008 vengono usati per generare file binari del progetto quando si compila la soluzione nella versione corrente di Visual Studio.After this change, the Visual Studio 2008 compiler and libraries are used to generate project binaries when you build the solution in the current version of Visual Studio.

Installare un set di strumenti di Visual Studio precedenteInstall an older Visual Studio toolset

È possibile che l'utente abbia un progetto di Visual C++ datato che non può o non vuole aggiornare, ma non sia disponibile la versione del set di strumenti della piattaforma corrispondente al progetto.You may have an old Visual C++ project that you can't or don't want to upgrade, but not the platform toolset version that matches your project. In questo caso, per ottenere il set di strumenti, è possibile installare l'edizione Community o Express gratuita di Visual Studio per la versione necessaria.In this case, to get the toolset, you can install the free Visual Studio Community or Express edition of the version you need. Ogni versione di Visual Studio a partire da Visual Studio 2008 è in grado di installare il compilatore, gli strumenti e le librerie necessari per usare quella versione come destinazione dalla versione corrente di Visual Studio.Every version of Visual Studio from Visual Studio 2008 on can install the compiler, tools, and libraries you need to target that version from the current Visual Studio. Accedere all'Area download Microsoft per trovare e scaricare una particolare versione di Visual Studio.Search the Microsoft Download Center to find and download a particular version of Visual Studio. Verificare che vengano scelte le opzioni di installazione di C++ durante l'installazione.Make sure you choose the C++ installation options during setup. Al termine dell'installazione, eseguire quella versione di Visual Studio per installare eventuali aggiornamenti.After setup completes, run that version of Visual Studio to install any updates. Verificare anche se in Windows Update sono presenti modifiche potenzialmente necessarie.Also check for any Windows Update changes that might be required. Può essere necessario ripetere più volte questa procedura di verifica degli aggiornamenti per ottenere tutti gli aggiornamenti.This update check process may need to be repeated more than once to get every update.

Di seguito sono riportati alcuni dei download di Visual Studio che potrebbero essere necessari:Here are some of the Visual Studio downloads you might need:

Quando questi prodotti sono installati, il menu a discesa della proprietà Set strumenti della piattaforma nella finestra di dialogo Pagine delle proprietà viene automaticamente aggiornato per visualizzare i set di strumenti disponibili.When these products are installed, the Platform Toolset property drop-down in the Property Pages dialog box is automatically updated to show the available toolsets. È ora possibile usare la versione più recente di Visual Studio per compilare progetti per tali versioni meno recenti del set di strumenti senza convertirle o aggiornarle.You can now use the latest version of Visual Studio to build projects for those older versions of the toolset without converting or upgrading them.

Vedere ancheSee Also

Aggiornamento di progetti da versioni precedenti di Visual C++Upgrading Projects from Earlier Versions of Visual C++
Miglioramenti della conformità di C++ in Visual Studio 2017C++ conformance improvements in Visual Studio 2017