{"id":34323,"date":"2024-06-10T16:00:55","date_gmt":"2024-06-10T16:00:55","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=34323"},"modified":"2024-06-10T16:00:55","modified_gmt":"2024-06-10T16:00:55","slug":"bosch-widely-adopts-visual-studio-2022-after-experiencing-performance-improvements-for-c-linux-cross-compilation","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/bosch-widely-adopts-visual-studio-2022-after-experiencing-performance-improvements-for-c-linux-cross-compilation\/","title":{"rendered":"Bosch widely adopts Visual Studio 2022 after experiencing performance improvements for C++ Linux cross-compilation"},"content":{"rendered":"<h3>Introduction<\/h3>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red.png\"><img decoding=\"async\" class=\"alignnone wp-image-34324\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red.png\" alt=\"Bosch symbol logo black red\" width=\"1172\" height=\"468\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red.png 1920w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red-300x120.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red-1024x409.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red-768x307.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/06\/Bosch_symbol_logo_black_red-1536x614.png 1536w\" sizes=\"(max-width: 1172px) 100vw, 1172px\" \/><\/a><\/p>\n<p><span class=\"TextRun SCXW69896041 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW69896041 BCX8\">The <\/span><span class=\"NormalTextRun CommentStart SCXW69896041 BCX8\">Bosch<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> security camera<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> team<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> ha<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\">d been evaluating Visual Studio as a<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> unified development setup<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> for their <\/span><span class=\"NormalTextRun SCXW69896041 BCX8\">team\u2019s <\/span><span class=\"NormalTextRun SCXW69896041 BCX8\">C++ development, <\/span><span class=\"NormalTextRun SCXW69896041 BCX8\">which includes<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> remote Linux<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> C++<\/span><span class=\"NormalTextRun SCXW69896041 BCX8\"> development for cross-compiling.<\/span>\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">While evaluating Visual Studio 2022, the team had a positive experience of using Visual Studio for their C++ development due to notable improvements over the years. Specifically, compared to their experience with Visual Studio 2019, they noticed improvements such as:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<ol>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559683&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0,46],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">More seamless integration with GDB and a quicker debug experience within the inner-dev-loop <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559683&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0,46],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Better integration with CMake and WSL2 to allow for stabilized build environments and easily transferrable dev environments. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/li>\n<\/ol>\n<p><span data-contrast=\"auto\">In Visual Studio 2022, they migrated their project from CMake settings to <\/span><a href=\"https:\/\/cmake.org\/cmake\/help\/latest\/manual\/cmake-presets.7.html\"><span data-contrast=\"none\">CMake presets<\/span><\/a><span data-contrast=\"auto\"> to improve portability between Visual Studio and VS Code, compilation performance, and ease of maintaining multiple different configurations.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span class=\"TextRun SCXW262439761 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW262439761 BCX8\">However, <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">th<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">e<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> Bosch team was still <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">impacted<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> by<\/span> <span class=\"NormalTextRun SCXW262439761 BCX8\">one issue with their Linux development<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> which was that there was a <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">gap in the current <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">sync mechanism when switching between code branches.<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> They had reached out to the <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">Microsoft <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">C++ team, who promptly resolved their issues<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> in <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">Visual Studio 2022 version 17.10<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">.<\/span><\/span> <span class=\"TextRun SCXW262439761 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW262439761 BCX8\">As a result of this collaboration, the <\/span><span class=\"NormalTextRun CommentStart SCXW262439761 BCX8\">C++<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> workload<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> has added new capabilities, which enable<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> finer grain<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> control of <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> settings<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> when used with a remote <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> daemon. This is <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">accomplished<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> via a new <\/span><span class=\"NormalTextRun SCXW262439761 BCX8\">CMake<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> presets property for the user specification of <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> daemon parameters. The property supports explicit control over the copy. For example, the user can now explicitly turn on\/off <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">rsync\u2019s<\/span> <span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">s<\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW262439761 BCX8\">ymlink<\/span><span class=\"NormalTextRun SCXW262439761 BCX8\"> \u201cmunging\u201d feature when copying.<\/span><\/span><span class=\"EOP SCXW262439761 BCX8\" data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<blockquote><p><span data-contrast=\"auto\">\u201cThis step significantly decreased our issues during CMake configure and the average time needed for a configure-compiler-debug- cycle, not only because of the omitted additional step, but also there is less effort in doing syncing as well, as the copy keeps untouched. <\/span><b><span data-contrast=\"auto\">This overall increased our productivity and reduced the pain in cross-compiling for multiple targets.<\/span><\/b><span data-contrast=\"auto\">\u201d &#8211; Bosch<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p><\/blockquote>\n<p><span data-contrast=\"auto\">This blog post was written in collaboration with Philipp Jeske and Rainer Bauereiss, a software engineer and a software engineering lead we worked with to deliver on these improvements, who shared their story and experience with C++ development while adopting Visual Studio 2022. Thank you both for your continued partnership over the years!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<hr \/>\n<h5><strong>What does your team do? What technical challenges come from your work?<\/strong><\/h5>\n<p><span data-contrast=\"auto\">We are developing the OS and the applications for the Bosch security cameras. Involved is an international team with multiple locations which are contributing software modules for those cameras on multiple layers. Scaling this firmware to multiple types of cameras is key.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Our OS is based on Linux in different variants, that differ depending on the target. Each OS variant comes with its own SDK and toolchain for cross-compiling on a Linux host.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">For embedded application development, we must work with different SDKs and toolchains. Most development is Windows based, but we also have Linux based machines. The toolchain is either locally installed or inside a WSL2 or other virtual machines tools. For limitations of some SDKs, the SDKs files are checked in as part of our application repository, and there come the symbolic links from our issue in play.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<h5><strong>What was the process of re-evaluating and adopting Visual Studio as a unified IDE for the team like?<\/strong><\/h5>\n<p><span data-contrast=\"auto\">Some months ago, there wasn\u2019t anything such as a unified development setup, but we were striving for a unified way of building our code.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">We started a proof of concept using Visual Studio 2022 for cross-development on Windows Hosts, after previously evaluating Visual Studio 2019.\u00a0 We started with WSL2 integration and CMakeSettings.json.\u00a0 We noticed substantial improvements in how working with VS2022 looks and feels like after the substantial changes made in the year before. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span class=\"NormalTextRun SCXW195228984 BCX8\">During the evaluation phase of Visual Studio 2019 we had good contact with the <\/span><span class=\"NormalTextRun CommentStart SCXW195228984 BCX8\">Microsoft <\/span><span class=\"NormalTextRun SCXW195228984 BCX8\">C++<\/span><span class=\"NormalTextRun SCXW195228984 BCX8\"> team, but sadly the tooling did not provide the functionality we needed. The main issue with Visual Studio 2019 before was the unsatisfying debug experience (due to lack of performance while compiling), when working remotely on a Linux-based system. The seamless integration from GDB into Visual Studio makes it nowadays one of the\u00a0<strong>best debugging experiences we have encountered so far<\/strong>. The Visual Studio and Visual Studio Code remote development experience, especially for Linux and CMake-based projects, has clearly increased a lot since the last evaluation.<\/span><\/p>\n<p><span data-contrast=\"auto\">This setup already had some benefits by using Visual Studio as IDE and debugger interface, but it had its drawbacks, especially the lack of performance whilst compiling and the not-portable CMakeSettings.json configuration. Nevertheless, this setup has already convinced some of us and we have started out using this setup for our daily business.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In parallel, we experimented a bit and finally encountered that <\/span><b><span data-contrast=\"auto\">when we use CMake Presets, most of the drawbacks would be resolved.<\/span><\/b><span data-contrast=\"auto\"> Therefore, we migrated from CMakeSettings.json to CMakePresets.json and with that setup our performance problem was gone, thanks to the rsync mechanism that removes the performance penalty that comes from compiling on a network share. Another advantage was that <\/span><b><span data-contrast=\"auto\">the configuration made in CMakePresets is compatible between Visual Studio and VS Code.<\/span><\/b><span data-contrast=\"auto\"> Additionally, it makes it easier for us to maintain multiple different build configurations.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<h5><strong>After migrating to CMake presets, what were your challenges with using Visual Studio?<\/strong><\/h5>\n<p><span class=\"TextRun SCXW231873589 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW231873589 BCX8\">We were so positive about the overall experience of using Visual Studio<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">. However, there was <\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">a flaw present in the <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW231873589 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> mechanism<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> preventing us from increasing the acceptance of the VS2022 solution widely across the team<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">. <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW231873589 BCX8\">Symlinks<\/span> <span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW231873589 BCX8\">were getting<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> munged when using <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW231873589 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> for <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW231873589 BCX8\">cross-compiling<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> our WSL targets<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">.<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> Because this was an issue for us and severity increased with the number of developers working with the new <\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">tool<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">, we reached out to the Visual Studio C++ team <\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">with the hope of getting some <\/span><span class=\"NormalTextRun SCXW231873589 BCX8\">additional<\/span><span class=\"NormalTextRun SCXW231873589 BCX8\"> information.\u00a0<\/span><\/span><span class=\"EOP SCXW231873589 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<h5><strong>What is your current experience with Visual Studio now that the fix has been implemented?<\/strong><\/h5>\n<p><span class=\"NormalTextRun SCXW79827107 BCX8\">Since the fix for our <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW79827107 BCX8\">rsync<\/span><span class=\"NormalTextRun SCXW79827107 BCX8\"> issue is available in the preview for the upcoming release, most of us switched to the prerelease version. This step significantly decreased our issues during <\/span><span class=\"NormalTextRun SCXW79827107 BCX8\">CMake<\/span><span class=\"NormalTextRun SCXW79827107 BCX8\"> configure and the average time needed for a configure-compile-debug-cycle decreased, not only because of the omitted <\/span><span class=\"NormalTextRun SCXW79827107 BCX8\">additional<\/span><span class=\"NormalTextRun SCXW79827107 BCX8\"> step,but also because there is less effort in doing the syncing as well, as the copy keeps the file names untouched. This overall increased our productivity and reduced the pain in cross-compiling for multiple targets.<\/span><\/p>\n<p><span data-contrast=\"auto\">We are on the verge of migrating to MSVC as a mandatory toolchain for all our development. The portability between Visual Studio and Visual Studio Code makes both in our case a good tooling, because of our diverse environment. Furthermore, it enables the developers to choose the development environment that works for them. <\/span><b><span data-contrast=\"auto\">This increases productivity and satisfaction across the team. <\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The experience working with the Microsoft C++ team was very pleasant and solution oriented. We hope that we were able to share our appreciation for the tooling with the team that develops it.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<hr \/>\n<p>You can adjust the value of munging symlinks via new rsync settings in the vendor block remote settings in CMake presets, as of Visual Studio 2022 version 17.10:<\/p>\n<p><code>\"rsyncCommandArgs\": [\"-t\", \"--delete\", <strong>\"--no-munge-links\"<\/strong>]<\/code><\/p>\n<p><code><\/code>\n<code>\"rsyncDaemonOptions\": [\"read only = no\", \"list = True\", <strong>\"munge symlinks = no\"<\/strong>]<\/code><\/p>\n<p>For example:<\/p>\n<pre>\"configurePresets\": [\r\n{\r\n\"name\": \"windows-base\",\r\n...\r\n\"vendor\": {\r\n\"microsoft.com\/VisualStudioRemoteSettings\/CMake\/1.0\": {\r\n\"rsyncCommandArgs\": [\"--no-munge-links\"],\r\n\"rsyncDaemonOptions\": [\"list = True\"]\r\n}\r\n}\r\n]<\/pre>\n<hr \/>\n<h3>Conclusion<\/h3>\n<p><span data-contrast=\"auto\">Bosch has successfully adopted Visual Studio 2022 as a unified IDE for their C++ Linux cross-compilation projects, thanks to migrating to CMake presets, overall improvements to the Linux experience in Visual Studio over the years and collaborating with the Microsoft C++ team to improve rsync mechanism issues.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Any developer targeting Linux with their CMake projects can try out the updates to the remote Linux experience with Visual Studio, including improvements to the CMake presets support and added rsync settings.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:278}\">\u00a0<\/span><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"aka.ms\/vs\" target=\"_blank\">Download Visual Studio<\/a><\/div><\/p>\n<p><span data-contrast=\"auto\">The Microsoft C++ team is continuously looking to improve the remote Linux experience with the IDE and would love to hear from any enterprises that work with Visual Studio. Please reach out to us via email at <a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com.<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The Bosch security camera team had been evaluating Visual Studio as a unified development setup for their team\u2019s C++ development, which includes remote Linux C++ development for cross-compiling.\u00a0 While evaluating Visual Studio 2022, the team had a positive experience of using Visual Studio for their C++ development due to notable improvements over the years. [&hellip;]<\/p>\n","protected":false},"author":85413,"featured_media":34324,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,266,279],"tags":[],"class_list":["post-34323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-cmake","category-linux"],"acf":[],"blog_post_summary":"<p>Introduction The Bosch security camera team had been evaluating Visual Studio as a unified development setup for their team\u2019s C++ development, which includes remote Linux C++ development for cross-compiling.\u00a0 While evaluating Visual Studio 2022, the team had a positive experience of using Visual Studio for their C++ development due to notable improvements over the years. [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/85413"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=34323"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34323\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/34324"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=34323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=34323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=34323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}