Guida al porting e aggiornamento in Visual C++Visual C++ Porting and Upgrading Guide

Questo argomento presenta una guida per aggiornare il codice di Visual C++.This topic provides a guide for upgrading Visual C++ code. Verrà illustrato come ottenere il codice da compilare ed eseguire correttamente in una versione più recente degli strumenti e usufruire delle nuove funzionalità del linguaggio e di Visual Studio.This includes getting the code to compile and run correctly on a newer release of the tools, as well as taking advantage of new language and Visual Studio features. Questo argomento fornisce anche informazioni su come eseguire la migrazione da app legacy a piattaforme più moderne.This topic also includes information about migrating legacy apps to more modern platforms.

Motivi per aggiornare il codice Visual C++Reasons to Upgrade Visual C++ Code

Motivi per cui è consigliabile aggiornare il codice:You should consider upgrading your code for the following reasons:

  • Codice più veloce, grazie alle ottimizzazioni migliorate del compilatore.Faster code, due to improved compiler optimizations.

  • Compilazioni più rapide, grazie a miglioramenti delle prestazioni nel compilatore stesso.Faster builds, due to performance improvements in the compiler itself.

  • Conformità agli standard migliorata.Improved standards conformance. Visual C++ ora implementa numerose funzionalità degli standard C++ più recenti.Visual C++ now implements many features from the latest C++ standards.

  • Maggiore sicurezza.Better security. Funzionalità di sicurezza, ad esempio la protezione del flusso di controllo.Security features such as guard checking.

Porting del codicePorting your Code

Prima di eseguire l'aggiornamento, valutare i progetti e il codice dell'applicazione.When upgrading, first consider your application's code and projects. L'applicazione è compilata con Visual Studio?Is your application built with Visual Studio? In tal caso, identificare i progetti coinvolti.If so, identify the projects involved. Si usano script di compilazione personalizzati?Do you have custom build scripts? Se si preferisce usare script di compilazione personalizzati anziché il sistema di compilazione di Visual Studio, il tempo impiegato per le operazioni di aggiornamento sarà maggiore, in quanto Visual Studio non aggiornerà automaticamente i file di progetto e le impostazioni di compilazione.If you have custom build scripts instead of using Visual Studio's build system, you will have more work to do in upgrading, because you can't save time by having Visual Studio update your project files and build settings.

Il sistema di compilazione e il formato dei file di progetto in Visual Studio è passato da vcbuild nelle versioni fino a Visual Studio 2008 al formato MSBuild nelle versioni di Visual Studio a partire da Visual Studio 2010.The build system and project file format in Visual Studio changed from vcbuild in versions up to Visual Studio 2008 to MSBuild in versions of Visual Studio from 2010 onwards. Se si esegue l'aggiornamento da una versione precedente alla versione 2010 e si dispone di un sistema di compilazione altamente personalizzato, saranno necessarie più operazioni.If your upgrade is from a version prior to 2010, and you have a highly customized build system, you might have to do more work to upgrade. Se invece si esegue l'aggiornamento da Visual Studio 2010 o versioni successive, i progetti usano già il formato MSBuild, quindi l'aggiornamento del progetto e la compilazione dell'applicazione risulteranno più semplici.If you are upgrading from Visual Studio 2010 or later, your projects are already using MSBuild, so upgrading the project and build for your application should be easier.

Se non si usa il sistema di compilazione di Visual Studio, è consigliabile eseguire l'aggiornamento per usare il formato MSBuild.If you are not using Visual Studio's build system, you should consider upgrading to use MSBuild. Se si esegue l'aggiornamento per usare il formato MSBuild, gli aggiornamenti futuri risulteranno più semplici e sarà più facile usare i servizi online, ad esempio Visual Studio Online.If you upgrade to use MSBuild, you might have an easier time in future upgrades, and it will be easier to use services such as Visual Studio Online. Il formato MSBuild supporta tutte le piattaforme di destinazione supportate da Visual Studio.MSBuild supports all the target platforms that Visual Studio supports.

Porting dei progetti di Visual StudioPorting Visual Studio Projects

Per iniziare ad aggiornare un progetto o una soluzione, aprire la soluzione nella nuova versione di Visual Studio e seguire le istruzioni per avviare l'aggiornamento.To start upgrading a project or solution, just open the solution in the new version of Visual Studio, and follow the prompts to start upgrading it. Quando si aggiorna un progetto, viene generato un report di aggiornamento che è salvato nella cartella di progetto con il nome UpgradeLog.htm.When you upgrade a project, you get an upgrade report, which is also saved in your project folder as UpgradeLog.htm. Il report di aggiornamento mostra un riepilogo dei problemi rilevati durante il processo di aggiornamento e alcune informazioni sulle modifiche apportate o sui problemi che non è stato possibile risolvere automaticamente.The upgrade report shows a summary of what problems were encountered during the upgrade process and some information about changes that were made, or problems that could not be addressed automatically.

  1. Proprietà di progettiProject properties

  2. File di inclusioneInclude files

  3. Codice che non viene più compilato correttamente a causa di miglioramenti o modifiche della conformità del compilatore nello standardCode that no longer compiles cleanly due to compiler conformance imrovements or changes in the standard

  4. Codice basato su funzionalità di Visual Studio o di Windows non più disponibili o file di intestazione che non sono inclusi in un'installazione predefinita di Visual Studio o che sono stati rimossi dal prodottoCode that relies on Visual Studio or Windows features that are no longer available or header files that either aren't included in a default installation of Visual Studio, or were removed from the product

  5. Codice che non viene più compilato a seguito di modifiche introdotte nelle API, ad esempio API rinominate, firme di funzione modificate o funzioni deprecateCode that no longer compiles due to changes in APIs such as renamed APIs, changed function signatures, or deprecated functions

  6. Codice che non viene più compilato a seguito di modifiche alla diagnostica, ad esempio un avviso che è diventato un erroreCode that no longer compiles due to changes in diagnostics, such as warning becoming an error

  7. Errori del linker a seguito di modifiche alle librerie, specialmente quando si usa /NODEFAULTLIB.Linker errors due to libraries that were changed, especially when /NODEFAULTLIB is used.

  8. Errori di runtime o risultati imprevisti a seguito di modifiche del comportamentoRuntime errors or unexpected results due to behavior changes

  9. Errori causati da errori introdotti negli strumenti.Errors due to errors that were introduced in the tools. Se si verifica un errore, segnalarlo al team di Visual C++ usando i canali di supporto tradizionali o il Feedback Center di Visual Studio.If you encounter an issue, report it to the Visual C++ team through your normal support channels or by using the Visual Studio Feedback Center.

    Oltre alle modifiche che non possono essere evitate a causa di errori del compilatore, altre modifiche nel processo di aggiornamento sono facoltative, ad esempio:In addition to changes that you can't avoid due to compiler errors, some changes are optional in an upgrade process, such as:

  10. Nuovi avvisi possono indicare che è necessario eseguire la pulizia del codice.New warnings might mean you want to clean up your code. A seconda delle informazioni di diagnostica specifiche, questi avvisi possono contribuire a migliorare la portabilità, la conformità agli standard e la sicurezza del codice.Depending on the specific diagnostics, this can improve the portability, standards conformance, and security of your code.

  11. È inoltre possibile usufruire delle funzionalità più recenti del compilatore, ad esempio l'opzione /guard:cf (Abilita protezione del flusso di controllo), che aggiunge controlli per l'esecuzione non autorizzata del codice.You might want to take advantage of newer compiler features such as the /guard:cf (Enable Flow Control Guard) compiler option, which adds checks for unauthorized code execution.

  12. È possibile aggiornare il codice per usare nuove funzionalità del linguaggio che semplificano il codice, migliorano le prestazioni dei programmi o aggiornano il codice per l'uso di librerie moderne e garantire la conformità agli standard e alle procedure consigliate più recenti.You might want to update some code to use new language features that simplify the code, improve the performance of your programs, or update the code to use modern libraries and conform to modern standards and best practices.

    Dopo aver aggiornato e testato il progetto è possibile migliorare ulteriormente il codice o pianificarne la direzione futura, se non riconsiderare l'architettura del progetto.Once you've upgraded and tested your project, you might also want to consider improving your code further or plan the future direction of your code, or even reconsider the architecture of your project. Sarà possibile ricevere il lavoro di sviluppo in corso?Will it receive ongoing development work? È importante che il codice possa essere eseguito su altre piattaforme?Will it be important for your code to run on other platforms? In caso affermativo, quali piattaforme?If so, what platforms? C++ è un linguaggio standardizzato che è stato progettato tenendo conto della portabilità e dello sviluppo multipiattaforma, sebbene il codice per molte applicazioni Windows sia strettamente legato alla piattaforma Windows.C++ is a standardized langauge designed with portability and cross-platform development in mind, and yet the code for many Windows applications is strongly tied to the Windows platform. Si intende effettuare il refactoring del codice, per separare le parti più legate alla piattaforma Windows?Do you want to refactor your code, to separate out those parts that are more tied to the Windows platform?

    E per quanto riguarda l'interfaccia utente?What about your user interface? Se si usa MFC, è consigliabile aggiornare l'interfaccia utente.If you are using MFC, you might want to update the UI. Si è scelto di usare alcune funzionalità MFC più recenti introdotte nella versione 2008 come Feature Pack?Are you using any of the newer MFC features that were introduced in 2008 as a Feature Pack? Se si vuole semplicemente conferire un nuovo aspetto all'app senza riscriverla completamente, è possibile provare a usare le API per la barra multifunzione in MFC o alcune delle nuove funzionalità di MFC.If you just want to give your app a newer look and feel, without rewriting the entire app, you might consider using the ribbon APIs in MFC, or using some of new features of MFC.

    Se si vuole assegnare al programma un'interfaccia utente XAML senza creare un'app UWP, è possibile usare C# con WPF per creare il livello dell'interfaccia utente ed effettuare il refactoring la logica C++ standard nelle DLL.If you want to give your program a XAML user-interface but don't want to create a UWP app, you can use C# with WPF to create the UI layer and refactor your standard C++ logic into DLLs. Creare un livello di interoperabilità in C++/CLI per la connessione di C# con il codice nativo.Create an interoperability layer in C++/CLI to connect C# with your native code. Un'altra opzione consiste nel creare un'app UWP usando C++/CX o C++/WinRT.Another option is to create a UWP app using C++/CX or C++/WinRT. In Windows 10 è possibile usare Desktop App Converter per creare un pacchetto dell'applicazione desktop esistente come app UWP senza dover modificare il codice.In Windows 10, you can use the Desktop App Converter to package your existing desktop application as a UWP app without having to modify any code.
    È possibile che siano emersi nuovi requisiti o si preveda l'esigenza di fornire il supporto di piattaforme diverse da Windows desktop, ad esempio Windows Phone o i dispositivi Android.Alternatively, perhaps you now have new requirements, or you can foresee the need for targeting platforms other than Windows desktop, such as Windows Phone, or Android devices. In questo caso, è possibile eseguire il porting del codice dell'interfaccia utente in una libreria dell'interfaccia utente multipiattaforma.You could port your user interface code to a cross-platform UI library. Grazie a questi framework dell'interfaccia utente, è possibile supportare più dispositivi continuando a usare Visual Studio e il debugger di Visual Studio come ambiente di sviluppo.With these UI frameworks, you can target multiple devices and still use Visual Studio and the Visual Studio debugger as your development environment.

TitoloTitle DescrizioneDescription
Aggiornamento di progetti da versioni precedenti di Visual C++Upgrading Projects from Earlier Versions of Visual C++ Illustra come usare i progetti creati nelle versioni precedenti di Visual C++.Discusses how to use projects created in earlier versions of Visual C++.
Novità di Visual C++ in Visual Studio 2017 RCWhat's New for Visual C++ in Visual Studio 2017 RC Modifiche nell'IDE e degli strumenti da Visual Studio 2015 a Visual Studio 2017Changes in the IDE and tools from Visual Studio 2015 to Visual Studio 2017
Miglioramenti della conformità in Visual Studio 2017C++ conformance improvements in Visual Studio 2017 Miglioramenti di conformità agli standard da Visual Studio 2015 a Visual Studio 2017Standards conformance improvements from Visual Studio 2015 to Visual Studio 2017
Cronologia delle modifiche di Visual C++ dal 2003 al 2015Visual C++ change history 2003 - 2015 Elenco di tutte modifiche apportate alle librerie e agli strumenti per la compilazione di Visual C++ in Visual Studio dalla versione 2003 alla 2015 che potrebbero richiedere modifiche del codice corrente.A list of all the changes in the Visual C++ libraries and build tools from Visual Studio 2003 through 2015 that might require changes in your code.
Visual C++: novità dalla versione 2003 alla 2015Visual C++ What's New 2003 through 2015 Tutte le novità relative a Visual C++ da Visual Studio 2003 a Visual Studio 2015.All the "what's new" information for Visual C++ from Visual Studio 2003 through Visual Studio 2015.
Porting di librerie di terze partiPorting 3rd-party libraries Come usare lo strumento della riga di comando vcpkg per trasferire le librerie open source precedenti alle versioni compilate con i set di strumenti più recenti di Visual C++.How to use the vcpkg command line tool to port older open-source libraries to versions compiled with more recent Visual C++ toolsets.
Porting e aggiornamento: esempi e case studyPorting and Upgrading: Examples and Case Studies In questa sezione viene illustrato il processo di porting e aggiornamento di vari esempi e applicazioni e vengono descritte le esperienze e i risultati.For this section, we ported and upgrades several samples and applications and discussed the experiences and results. La lettura di questi esempi offre una panoramica delle operazioni coinvolte nel processi di porting e aggiornamento.You might find that reading these gives you a sense of what is involved in the porting and upgrading process. Vengono inoltre presentati suggerimenti e indicazioni per l'aggiornamento e viene descritto come risolvere errori specifici.Throughout the process, we discuss tips and tricks for upgrading and show how specific errors were fixed.
Trasferimento alla piattaforma UWP (Universal Windows Platform)Porting to the Universal Windows Platform Contiene informazioni sul porting di codice a Windows 10Contains information about porting code to Windows 10
Introduzione a Visual C++ per utenti UNIXIntroduction to Visual C++ for UNIX Users Fornisce informazioni per gli utenti UNIX che non hanno familiarità con Visual C++ e vogliono aumentare la produttività con questo linguaggio.Provides information for UNIX users who are new to Visual C++ and want to become productive with it.
Porting da UNIX a Win32Porting from UNIX to Win32 Illustra le opzioni per la migrazione di applicazioni UNIX a Windows.Discusses options for migrating UNIX applications to Windows.
Nozioni di base della migrazione in C++/CLIC++/CLI Migration Primer Fornisce informazioni dettagliate su come eseguire l'aggiornamento delle estensioni gestite per la sintassi C++ per usare la nuova sintassi.Shows in detail how to upgrade your Managed Extensions for C++ syntax to use the new syntax. Per altre informazioni, vedere Estensioni componenti per le piattaforme runtime.For more information, see Component Extensions for Runtime Platforms.

Vedere ancheSee Also

Visual C++Visual C++