Skip to content

Commit eaf82af

Browse files
authored
Merge pull request #6139 from TylerMSFT/reorganize
reorganize page
2 parents 3142fea + 48d2bdb commit eaf82af

File tree

2 files changed

+142
-51
lines changed

2 files changed

+142
-51
lines changed
264 KB
Loading
Lines changed: 142 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,151 @@
11
---
22
title: "Microsoft C++ porting and upgrading guide"
3-
description: "Upgrade Microsoft C++ code to the latest version of Visual Studio."
4-
ms.date: 09/10/2020
5-
ms.assetid: f5fbcc3d-aa72-41a6-ad9a-a706af2166fb
3+
description: "Your comprehensive hub for upgrading and modernizing Microsoft C++ code to the latest version of Visual Studio. Find tools, guides, success stories, and best practices."
4+
ms.date: 11/06/2025
65
ms.topic: "overview"
7-
ms.custom: intro-overview
6+
ms.custom: intro-hub
7+
author: tylermsft
8+
ms.author: twhitney
89
---
9-
# Microsoft C++ porting and upgrading guide
10-
11-
This article provides a guide for upgrading Microsoft C++ code to the latest version of Visual Studio. For projects created in Visual Studio 2010 through 2017, just open the project in Visual Studio 2019. You can upgrade a Visual Studio 2008 or earlier project in two steps. Use Visual Studio 2010 to convert the project to MSBuild format first. Then open the project in Visual Studio 2019. For complete instructions, see [Upgrading C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md).
12-
13-
The toolsets in Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019 are binary-compatible. Now you can upgrade to a more recent version of the compiler without having to upgrade your library dependencies. For more information, see [C++ binary compatibility between Visual Studio versions](binary-compat-2015-2017.md).
14-
15-
When upgrading projects that use open-source libraries or are meant to run on multiple platforms, we recommended migrating to a CMake-based project. For more information, see [CMake projects in Visual Studio](../build/cmake-projects-in-visual-studio.md)
16-
17-
## Reasons to upgrade C++ code
18-
19-
If a legacy application is running satisfactorily, in a secure environment, and isn't under active development, there might not be much incentive to upgrade it. However, consider an upgrade in these cases: Your application requires ongoing maintenance. Or, you're doing new feature development, or making performance or security improvements. An upgrade brings these benefits:
20-
21-
- The same code can run faster, because we've improved compiler optimizations.
22-
23-
- Modern C++ features and programming practices eliminate many common causes of bugs, and produce code that's far easier to maintain than older C-style idioms.
24-
25-
- Build times are faster, because of performance improvements in the compiler and linker.
2610

27-
- Better standards conformance. The [/permissive-](../build/reference/permissive-standards-conformance.md) compiler option helps you identify code that doesn't conform to the current C++ standard. The [new preprocessor](../preprocessor/preprocessor-experimental-overview.md) supports code conformance, too.
28-
29-
- Better run-time security, including more secure [C Runtime library](../c-runtime-library/security-features-in-the-crt.md) features. And, compiler features such as [guard checking](../build/reference/guard-enable-guard-checks.md) and address sanitizers (new in Visual Studio 2019 version 16.4).
30-
31-
## Multitargeting vs. upgrading
32-
33-
Perhaps upgrading your code base to a new toolset isn't an option for you. You can still use the latest Visual Studio to build and edit projects that use older toolsets and libraries. In Visual Studio 2019, you can take advantage of features such as:
34-
35-
- modern static analysis tools, including the C++ Core Guidelines checkers and Clang-Tidy, to help identify potential problems in your source code.
36-
37-
- automatic formatting according to your choice of modern styles can help make legacy code much more readable.
38-
39-
For more information, see [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md).
40-
41-
## In this section
11+
# Microsoft C++ porting and upgrading guide
4212

43-
| Title | Description |
44-
|--|--|
45-
| [Upgrading C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md) | How to upgrade your code base to the latest version of Visual Studio and the compiler. |
46-
| [IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) | Useful IDE features that help in the upgrade process. |
47-
| [C++ binary compatibility between Visual Studio versions](binary-compat-2015-2017.md) | Consume v140 and later libraries as-is from v140 and later projects. |
48-
| [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md) | Use Visual Studio with older compilers and libraries. |
49-
| [Visual C++ change history 2003 - 2015](visual-cpp-change-history-2003-2015.md) | A list of all the changes in the Microsoft C++ libraries and build tools from Visual Studio 2003 through 2015 that might require changes in your code. |
50-
| [Visual C++ What's New 2003 through 2015](visual-cpp-what-s-new-2003-through-2015.md) | All the "what's new" information for Microsoft C++ from Visual Studio 2003 through Visual Studio 2015. |
51-
| [Porting and Upgrading: Examples and Case Studies](porting-and-upgrading-examples-and-case-studies.md) | For this section, we ported and upgrades several samples and applications and discussed the experiences and results. These articles give you a sense of what's involved in the porting and upgrading process. Throughout the process, we discuss tips and tricks for upgrading and show how specific errors were fixed. |
52-
| [Porting to the Universal Windows Platform](porting-to-the-universal-windows-platform-cpp.md) | Contains information about porting app code to Windows 10 and later |
53-
| [Introduction to Visual C++ for UNIX Users](introduction-to-visual-cpp-for-unix-users.md) | Provides information for UNIX users who are new to Visual C++ and want to become productive with it. |
54-
| [Running Linux programs on Windows](porting-from-unix-to-win32.md) | Discusses options for migrating UNIX applications to Windows. |
13+
**Transform your legacy C++ applications with confidence.** Whether you're upgrading from Visual Studio 2008 or modernizing to take advantage of the latest C++ features, this comprehensive guide provides everything you need for a successful upgrade journey.
14+
15+
:::row:::
16+
:::column span="":::
17+
:::column-end:::
18+
:::column span="2":::
19+
![C++ logo with an upward arrow and abstract code on a blue background suggesting improvements from upgrading.](media/upgrade-cpp.png)
20+
:::column-end:::
21+
:::column span="":::
22+
:::column-end:::
23+
:::row-end:::
24+
25+
:::row:::
26+
:::column span="2":::
27+
## πŸš€ Quick start
28+
29+
**Most projects upgrade seamlessly:** For projects created in Visual Studio 2010-2017, simply open them in the latest Visual Studio. For Visual Studio 2008 or earlier projects, use our [two-step upgrade process](upgrading-projects-from-earlier-versions-of-visual-cpp.md).
30+
31+
**Binary compatibility:** Visual Studio 2015, 2017, 2019, 2022, and 2026 build tools are binary-compatible, so you can upgrade without rebuilding library dependencies. [Learn more](binary-compat-2015-2017.md).
32+
33+
**CMake projects:** For projects using open-source libraries or targeting multiple platforms, consider migrating to CMake. [Learn more](../build/cmake-projects-in-visual-studio.md).
34+
:::column-end:::
35+
:::column span="2":::
36+
## πŸ’‘ Why upgrade?
37+
38+
- **πŸƒβ€β™‚οΈ Better Performance:** Faster execution and build times
39+
- **πŸ”’ Enhanced Security:** Address sanitizers and security features
40+
- **πŸ“ Standards Compliance:** Modern C++ features and conformance
41+
- **πŸ› οΈ Better Tools:** Advanced debugging and analysis capabilities
42+
:::column-end:::
43+
:::row-end:::
44+
45+
## 🎯 Choose your upgrade path
46+
47+
:::row:::
48+
:::column:::
49+
### πŸ“‹ Assess & plan
50+
**Evaluate your current codebase and plan your strategy**
51+
52+
- [πŸ” Overview of potential upgrade issues](overview-of-potential-upgrade-issues-visual-cpp.md)
53+
- [πŸ”— C++ binary compatibility between versions](binary-compat-2015-2017.md)
54+
- [πŸ“œ Visual C++ change history 2003-2015](visual-cpp-change-history-2003-2015.md)
55+
- [⚠️ Features deprecated in Visual Studio](features-deprecated-in-visual-studio.md)
56+
- [🎯 Use native multi-targeting for old projects](use-native-multi-targeting.md)
57+
:::column-end:::
58+
:::column:::
59+
### πŸ”§ Upgrade & modernize
60+
**Step-by-step guides and tools for upgrading**
61+
62+
- [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md)
63+
- [πŸ› οΈ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md)
64+
- [πŸ”„ Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md)
65+
- [πŸ”§ Update WINVER and _WIN32_WINNT](modifying-winver-and-win32-winnt.md)
66+
- [πŸ”— Fix dependencies on library internals](fix-your-dependencies-on-library-internals.md)
67+
- [πŸ“Š Floating-point migration issues](floating-point-migration-issues.md)
68+
:::column-end:::
69+
:::row-end:::
70+
71+
:::row:::
72+
:::column:::
73+
### 🌐 Platform migration
74+
**Move your applications to modern platforms**
75+
76+
- [πŸ“± Port to Universal Windows Platform](porting-to-the-universal-windows-platform-cpp.md)
77+
- [πŸ”— Use existing C++ code in UWP apps](how-to-use-existing-cpp-code-in-a-universal-windows-platform-app.md)
78+
- [🐧 Visual C++ for UNIX users](introduction-to-visual-cpp-for-unix-users.md)
79+
- [πŸͺŸ Running Linux programs on Windows](porting-from-unix-to-win32.md)
80+
- [πŸ“¦ Port third-party libraries](porting-third-party-libraries.md)
81+
:::column-end:::
82+
:::column:::
83+
### ✨ Success stories & examples
84+
**Learn from real-world upgrade experiences**
85+
86+
- [πŸ“– Examples and case studies overview](porting-and-upgrading-examples-and-case-studies.md)
87+
- [πŸ“ Case study: MFC Scribble upgrade](porting-guide-mfc-scribble.md)
88+
- [πŸ•΅οΈ Case study: COM Spy upgrade](porting-guide-com-spy.md)
89+
- [πŸ” Case study: Spy++ upgrade](porting-guide-spy-increment.md)
90+
- [πŸ—οΈ VCBuild vs. MSBuild migration](build-system-changes.md)
91+
:::column-end:::
92+
:::row-end:::
93+
94+
[πŸ“š Read more case studies](porting-and-upgrading-examples-and-case-studies.md)
95+
96+
## πŸ› οΈ Upgrade benefits
97+
98+
:::row:::
99+
:::column span="2":::
100+
### Performance & optimization
101+
- **Faster execution** with improved compiler optimizations
102+
- **Reduced build times** through compiler and linker improvements
103+
- **Better memory usage** with modern runtime optimizations
104+
:::column-end:::
105+
:::column span="2":::
106+
### Security & reliability
107+
- **Enhanced security** with address sanitizers and [guard checking](../build/reference/guard-enable-guard-checks.md)
108+
- **Secure runtime libraries** with improved [CRT security features](../c-runtime-library/security-features-in-the-crt.md))
109+
- **Better error detection** with static analysis tools
110+
:::column-end:::
111+
:::row-end:::
112+
113+
:::row:::
114+
:::column span="2":::
115+
### Developer experience
116+
- **Modern IDE features** with IntelliSense improvements
117+
- **Advanced debugging** with better visualizers and diagnostics
118+
- **Code analysis** with Core Guidelines checkers and Clang-Tidy
119+
:::column-end:::
120+
:::column span="2":::
121+
### Standards & compatibility
122+
- **Better C++ standards conformance** with [`/permissive-`](../build/reference/permissive-standards-conformance.md) mode
123+
- **Modern preprocessor** for improved code conformance. [Learn more](../preprocessor/preprocessor-experimental-overview.md)
124+
- **Cross-platform support** with CMake integration
125+
:::column-end:::
126+
:::row-end:::
127+
128+
## πŸ€” Multitargeting vs. upgrading
129+
130+
**Not ready for a full upgrade?** You can still use the latest Visual Studio with older build tools and libraries:
131+
132+
- βœ… **Modern static analysis tools** including C++ Core Guidelines checkers and Clang-Tidy
133+
- βœ… **Automatic code formatting** to improve legacy code readability
134+
- βœ… **Latest IDE features** while maintaining compatibility
135+
136+
[Learn about native multi-targeting β†’](use-native-multi-targeting.md)
137+
138+
## πŸš€ Ready to start?
139+
140+
1. **πŸ“Š Assess your current project** with our [upgrade issues overview](overview-of-potential-upgrade-issues-visual-cpp.md)
141+
2. **πŸ”„ Follow our step-by-step guide** to [upgrade from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md)
142+
3. **πŸ› οΈ Use our IDE tools** to [streamline the upgrade process](ide-tools-for-upgrading-code.md)
143+
4. **πŸ“– Learn from others** with our [real-world case studies](porting-and-upgrading-examples-and-case-studies.md)
144+
145+
**Questions?** Join the conversation in [Microsoft Learn Q&A](/answers/topics/c%2B%2B.html) or check out the [C++ Team Blog](https://devblogs.microsoft.com/cppblog/) for the latest updates.
55146

56147
## See also
57148

58-
[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)<br/>
59-
[What's New for The C++ compiler in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)<br/>
60-
[C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md)<br/>
149+
[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)\
150+
[What's new for the C++ compiler in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)\
151+
[C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md)

0 commit comments

Comments
Β (0)