{"id":18615,"date":"2018-07-31T09:00:39","date_gmt":"2018-07-31T16:00:39","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/?p=18615"},"modified":"2019-02-14T15:23:38","modified_gmt":"2019-02-14T23:23:38","slug":"how-to-convince-your-management-to-upgrade-to-visual-studio-2017-for-c-and-cpp-developers","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/how-to-convince-your-management-to-upgrade-to-visual-studio-2017-for-c-and-cpp-developers\/","title":{"rendered":"How to Convince Your Management to Upgrade to Visual Studio 2017 for C# and C++ Developers"},"content":{"rendered":"<p>Have you tried Visual Studio 2017 at home and want to use it at work? Here are eight reasons to upgrade today that you can share with your management:<\/p>\n<ol>\n<li><a href=\"#reason1\">Faster Than Ever<\/a><\/li>\n<li><a href=\"#reason2\">Efficient Code Navigation<\/a><\/li>\n<li><a href=\"#reason3\">Refactorings and Quick Actions<\/a><\/li>\n<li><a href=\"#reason4\">Additions to Core Editor Functionality<\/a><\/li>\n<li><a href=\"#reason5\">Debugging Improvements<\/a><\/li>\n<li><a href=\"#reason6\">New and Refreshed Unit Testing Experience<\/a><\/li>\n<li><a href=\"#reason7\">Code Style Configuration and Enforcement<\/a><\/li>\n<li><a href=\"#reason8\">C# 7.3 and MSVC Standards Conformance<\/a><\/li>\n<li><a href=\"#upgradetoday\">Upgrade today!<\/a><\/li>\n<\/ol>\n<p><a name=\"reason1\"><\/a><\/p>\n<h2>Reason 1: Faster Than Ever<\/h2>\n<p>We have made (and are continuing to make) substantial improvements to solution load and startup, branch switching, and unit test discovery times. Starting <a href=\"https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2018\/04\/04\/load-solutions-faster-with-visual-studio-2017-version-15-6\/\">from Visual Studio 2017 version 15.6<\/a>, solutions load on average 35% faster than in Visual Studio 2015. In fact, .NET and C++ developers opening large solutions in Visual Studio 2017 will notice their solutions load twice as fast as they did in 2015. Say goodbye to startup delays!<\/p>\n<p>We have great news about Visual Studio setup; the setup experience is faster and more lightweight than ever. Our new install experience allows you to pick and choose what you want to install&#8211;significantly reducing your install time and size, getting you up and running in Visual Studio 2017 in no time. It also installs <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/productinfo\/vs2017-compatibility-vs#installation\">side-by-side<\/a> with previous versions of Visual Studio.<\/p>\n<p><a name=\"reason2\"><\/a><\/p>\n<h2>Reason 2: Efficient Code Navigation<\/h2>\n<p>We know you spend as much time understanding code as writing new code, so great navigation tools are paramount to your success as a developer. Here is how you can <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/navigating-code\">navigate effectively in Visual Studio 2017<\/a>:<\/p>\n<ul>\n<li><b>Search<\/b> <b>files, types, members, and symbols in Go To All<\/b> (<b>Ctrl+T<\/b> <b>or Ctrl+,<\/b>) \u2013 Use this symbolic search (with category filters and individualized commands) to jump to files and symbols in your codebase without having to go through the Solution Explorer. To filter your search results to only types, for example, use the query syntax (e.g., \u201ct myType\u201d), the type filter button, or the command <b>Edit.GoToType <\/b>(see under Edit &gt; Go To). Go To All search also has support for camelCase matching so you don\u2019t have to type as many characters to get the results you need (e.g., &#8220;mf&#8221; for &#8220;myFile.cs&#8221;).<\/li>\n<li><b>Group, sort, filter, and lock results in Find All References<\/b> (<b>Shift+F12<\/b>) \u2013 Group your .NET and C++ reference results by document, project, definition, etc. to quickly narrow down on the results you\u2019re looking for (whether it be identifying dead code or investigating the ramifications of a refactoring). For .NET development, view colorized symbol references in Find All References, so your results look like the code in the editor.<\/li>\n<li><b>Ctrl+Click<\/b> <b>to Go To Definition<\/b> \u2013 Hold down Ctrl, hover over a symbol to create a link, and click to navigate to the definition. This is especially helpful if you are fond of the mouse or if you are scrolling and exploring during a debug session.<b> <\/b><\/li>\n<li><b>Go To Implementation for .NET<\/b> (<b>Ctrl+F12<\/b>) \u2013 See all implementations of a base type or member. If there is only one, we\u2019ll jump you right there! In Visual Studio 2017, you can Go To Definition on the \u2018override\u2019 keyword in a method signature to go back to the overridden base type or member.<\/li>\n<li><b>Navigate<\/b> <b>to decompiled assemblies for C# source<\/b> (<b>F12<\/b>) \u2013 Enable this feature to view method bodies of external sources (rather than just signatures in Metadata As Source) when you Go To Definition. To turn this feature on, go to <b>Tools &gt; Options &gt; Text Editor &gt; C# &gt; Advanced &gt; Navigate to decompiled assemblies<\/b>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/GoToAllWithRecent.png\"><img decoding=\"async\" class=\"\" title=\"Go To All showing recent files and scope to current file options highlighted\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/GoToAllWithRecent.png\" alt=\"Go To All showing recent files and scope to current file options highlighted\" width=\"441\" height=\"395\" align=\"center\" \/><\/a><\/p>\n<h2>Reason 3: Refactorings and Quick Actions<\/h2>\n<p>Each release of Visual Studio 2017 brings more and <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/code-generation-in-visual-studio\">more refactorings and quick fixes<\/a>. Any quick action or refactoring can be triggered using <b>Ctrl+.<\/b> or <b>Alt+Enter<\/b> (for single-hand accessibility). Here are some of the ones you requested that made it in so far in .NET, across versions 15.0 through 15.8:<\/p>\n<ul>\n<li>Add null-check<\/li>\n<li>Invert if-statement<\/li>\n<li>Resolve merge-conflict<\/li>\n<li>Convert LINQ query to foreach<\/li>\n<li>Convert foreach-to-for-loop and vice versa<\/li>\n<li>Toggle between \u2018var\u2019 and the explicit type<\/li>\n<li>Sync file and type name<\/li>\n<li>Move type to file with same name<\/li>\n<li>Add parameter to constructor or method from callsite<\/li>\n<li>Convert String.Format to interpolated string<\/li>\n<li>Make private field readonly<\/li>\n<li>Add missing modifier and sort modifiers<\/li>\n<li>Remove unused variable<\/li>\n<li>Remove unnecessary parentheses<\/li>\n<\/ul>\n<p>For C++ there are a couple new quick actions to note:<\/p>\n<ul>\n<li>Convert Macro to Constexpr<\/li>\n<li>Change Declaration to use Constexpr<\/li>\n<\/ul>\n<p>Because the .NET experience in Visual Studio 2017 is built on the Roslyn language service, any developer can write their own refactoring or code analyzer to automate actions or enforce style. <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/extensibility\/getting-started-with-roslyn-analyzers\">Read our walkthroughs<\/a> to get started or check out existing community analyzers you can download.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.InvertIf.png\"><img decoding=\"async\" class=\"alignnone\" title=\"Invert If statement\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.InvertIf.png\" alt=\"Invert If statement\" width=\"466\" height=\"223\" \/><\/a><\/p>\n<h2>Reason 4: Additions to Core Editor Functionality<\/h2>\n<p>We\u2019ve added (and are working to add more) common editor features so you can quickly move around and edit your code:<\/p>\n<ul>\n<li><b>Expand\/Contract Selection<\/b> (<b>Alt+Shift+[+\/-]<\/b>) \u2013 Grow and shrink your selection by code constructs, i.e., from symbol to expression to statement to body to file.<\/li>\n<li><b>Duplicate Line<\/b> (<b>Ctrl+D<\/b> in the Default profile) \u2013 Duplicate the selected text (or the current line, if no selection) without adding anything to your Copy\/Paste clipboard.<\/li>\n<li><b>Multi-caret editing (Ctrl+Alt+Click and Shift+Alt+Ins)<\/b> &#8212; Create multiple insertion points via Ctrl + Alt + Click or add new carets and selections that match the current selection with Shift + Alt + Ins.<\/li>\n<li><b>Structure guide lines<\/b> \u2013 Easily visualize the structure of your code with vertical lines between braces. Hover on the lines to see a hierarchy of code structure.<\/li>\n<li><b><a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/visual-studio-2017-for-dotnet-developers?utm_source=vsblog&amp;utm_medium=convinceyourboss#im-used-to-my-keyboard-shortcuts-from-a-different-extensioneditoride\">New Keymapping Schemes<\/a><\/b><b> <\/b>&#8212; If you&#8217;re coming from another IDE or coding environment, you can change your keyboard scheme with <b>Tools &gt; Options &gt; Environment &gt; Keyboard<\/b> and use the drop down to select the new VS Code or ReSharper (VS) schemes.<\/li>\n<\/ul>\n<p>For C++ development, we have added several other editor improvements:<\/p>\n<ul>\n<li><b>Open Folder Mode<\/b> \u2013 Edit, read, build, and debug C++ code by opening folders containing source code without the need to create any solutions or projects. This includes built-in support for handling CMake projects.<\/li>\n<li><b>Template IntelliSense<\/b> \u2013 The editor now displays a \u2018Template Bar\u2019 which allows C++ developers to provide sample template arguments for improved IntelliSense in class\/function templates.<\/li>\n<li><b>Macro Expansion in Quick Info<\/b> \u2013 Hovering over a macro will display the actual expansion of the macro that the preprocessor will replace during the first stage of compilation.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.CppTemplateIntelliSense.jpg\"><img decoding=\"async\" class=\"alignnone\" title=\"CPP Template IntelliSense\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.CppTemplateIntelliSense.jpg\" alt=\"CPP Template IntelliSense\" width=\"559\" height=\"161\" \/><\/a><\/p>\n<p><a name=\"reason5\"><\/a><\/p>\n<h2>Reason 5: Debugging Improvements<\/h2>\n<p>The Visual Studio 2017 debugger allows you to diagnose issues faster by surfacing critical information and functionality without requiring new breakpoints and a restart of your debugging session.<\/p>\n<ul>\n<li><b>The new Exception Helper<\/b> \u2013 See which variable or member is returning null when a NullReferenceException is thrown, and tweak exception configuration options.<\/li>\n<li><b><a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/debugger\/how-to-use-intellitrace-step-back\">Step Back debugging<\/a><\/b> <b>(Enterprise only)<\/b> \u2013 Go back to previous breakpoints or steps and view the state of the application as it was in the past.<\/li>\n<li><b>Run To Click<\/b> \u2013 Hover at the beginning of a line of code and click the green play button to run the debugger to your location without having to hunt down the yellow instruction pointer.<\/li>\n<li><b>Just My Code stepping for C++ <\/b>\u2013 Step over non-user code, so you don\u2019t have to spend your time stepping over countless lines of library code that you\u2019re not interested in.<\/li>\n<\/ul>\n<p><a name=\"reason6\"><\/a><\/p>\n<h2>Reason 6: New and Refreshed Unit Testing Experience<\/h2>\n<p>We buckled down on providing a fast and productive unit testing experience for MSTest (v1.0 and 2.0), NUnit, XUnit, Google Test, and Boost frameworks:<\/p>\n<ul>\n<li><b>Test Explorer Performance Improvements<\/b> \u2013 Test discovery is fast in Visual Studio 2017 and we will instantly display newly added tests (without requiring a build).<\/li>\n<li><b>Test Explorer Hierarchy View<\/b> &#8212; We\u2019ve also added a hierarchy view of your unit tests so that you can explore and run them by project, class, etc. Test runs now also have responsive icons so you can see what tests are currently executing and pending to execute.<\/li>\n<li><b>Live Unit Testing for .NET (Enterprise only)<\/b> \u2013 As you type, Live Unit Testing identifies which unit tests are impacted by your code change, runs those tests, and updates icons in the editor to display the results of the test run. You can configure what tests are discovered and run in your \u201clive test set\u201d by including or excluding test projects or individual tests. To enable Live Unit Testing, go to <b>Test &gt; Live Unit Testing &gt; Start<\/b>.<\/li>\n<li><b>Google Test and Boost support for C++<\/b> &#8212; The Google Test and Boost.Test unit testing frameworks are completely supported and integrated with Visual Studio\u2019s testing tools.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.TestHierarchy.png\"><img decoding=\"async\" class=\"aligncenter\" title=\"Test Explorer showing Test Heirarchy\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2018\/07\/2018.07.24.Upgrade2017.TestHierarchy.png\" alt=\"Test Explorer showing Test Heirarchy\" \/><\/a><\/p>\n<h2>Reason 7: Code Style Configuration and Enforcement<\/h2>\n<p>Visual Studio 2017 enables individuals and teams to drive consistency across their codebase with <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/create-portable-custom-editor-options\">coding convention configuration and enforcement<\/a>.<\/p>\n<ul>\n<li><b>Individual Coding Conventions for .NET<\/b> \u2013 Configure your coding preferences for your machine in <b>Tools &gt; Options &gt; Text Editor &gt; C# | Basic &gt; Code Style<\/b>.<\/li>\n<li><b>Team Coding Conventions for .NET<\/b> \u2013 Use .editorconfig (we worked with the community to extend the open-source file format to work with .NET code style) to codify your conventions and have them enforced in Visual Studio. Say goodbye to managing your rules from a file share!<\/li>\n<li><b>Fix All Violations<\/b> \u2013 Use the lightbulb menu (<b>Ctrl+.<\/b> or <b>Alt+Enter<\/b>) and select the Document, Project, or Solution scope from the preview dialog to fix all violations of a single rule.<\/li>\n<li><b>One-click Code Cleanup for .NET &#8212;<\/b>In Visual Studio 2017 15.8, you can perform additional code cleanup with Format Document (<b>Ctlr+K,D<\/b>) by configuring it in <b>Tools &gt; Options &gt; Text Editor &gt; C# &gt; Code Style &gt; Formatting<\/b> and checking fixes like Remove and Sort usings.<\/li>\n<li><b>ClangFormat for C++<\/b> &#8211; In addition to EditorConfig, ClangFormat is supported, giving C++ developers the ability to style and format their code based on a set of rules that can be configured in a .clang-format or _clang-format file.<\/li>\n<\/ul>\n<p><a name=\"reason8\"><\/a><\/p>\n<h2>Reason 8: C# 7.3 and MSVC Standards Conformance<\/h2>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/whats-new\/index\">C# 7.0<\/a> ships with Visual Studio 2017 by default, bringing language features like tuples, pattern-matching, and out var to help you work with data and make your code more readable. You can also upgrade your project to be on the \u201clatest minor\u201d version of C# and take advantage of <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/whats-new\/index\">features in our point-releases<\/a> like: async Main, Span, Enum constraints, and more!<\/p>\n<p>As of Visual Studio 2017 version 15.7, MSVC compiler toolset <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2018\/05\/07\/announcing-msvc-conforms-to-the-c-standard\/\">conforms to the C++ Standard<\/a> up to and including C++17, with minor exceptions. The C++ team worked to significantly overhaul the compiler, making it far easier to implement modern C++ features. Additionally, we added the C++ Core Guidelines Check extension (CppCoreCheck). This extension is designed to make it easy to adopt C++ Core Guidelines and adopt utilities from the Guidelines Support Library.<\/p>\n<p>Migration to Visual Studio 2017 for C++ is easier than ever before. Visual Studio C++ 2017 is binary compatible with Visual Studio C++ 2015, so there is no need to rebuild your 2015 component. Furthermore, the decoupling of toolsets means that you can use your toolset from 2013 or later.<\/p>\n<p><a name=\"upgradetoday\"><\/a><\/p>\n<h2>Upgrade Today<\/h2>\n<p>Upgrading may be extremely easy for your team&#8211;if you and your team are on Visual Studio Community or have an EA\/Subscription, you already have access to a Visual Studio 2017 license today. To learn more about how to upgrade, visit our <a href=\"https:\/\/visualstudio.microsoft.com\/upgrade-visual-studio-2017-1\/\">upgrade site<\/a>. To learn more about how you can be productive in Visual Studio 2017, check out the <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/visual-studio-2017-for-dotnet-developers?utm_source=vsblog&amp;utm_medium=convinceyourboss\">productivity guide<\/a> for .NET developers for a comprehensive overview of our tools and features.<\/p>\n<h2>Give Us Feedback<\/h2>\n<p>We\u2019re releasing updates to Visual Studio at a faster cadence than ever before so that we can unblock you on any issues you may have and evolve and create features to make you more productive in your everyday workflow.<\/p>\n<p>Use the <b>Send Feedback<\/b> button inside Visual Studio to have direct access to the product team (we look at all of them!) and to easily share memory dumps and traces so that we can more quickly investigate issues with performance you may have. Also, use the button to request productivity features you need to code with ease and confidence. We are here to help you upgrade!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio 2017 is our best IDE yet. To help you write great code, it\u2019s packed with new Refactorings and Quick Actions, and offers unit testing, debugging, navigation, and code style improvements. It loads solutions faster than ever, and ships with C# 7.3 and the MSVC compiler toolset that conforms to the latest C++ standards.<\/p>\n","protected":false},"author":586,"featured_media":196260,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[472,155],"tags":[237,3,354,1383,9,53,526,287,182,147,12,156],"class_list":["post-18615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gaming","category-visual-studio","tag-net","tag-net-framework","tag-announcement","tag-c","tag-debug","tag-performance","tag-productivity","tag-tips-and-tricks","tag-unity","tag-update","tag-visual-studio","tag-visual-studio-2017"],"acf":[],"blog_post_summary":"<p>Visual Studio 2017 is our best IDE yet. To help you write great code, it\u2019s packed with new Refactorings and Quick Actions, and offers unit testing, debugging, navigation, and code style improvements. It loads solutions faster than ever, and ships with C# 7.3 and the MSVC compiler toolset that conforms to the latest C++ standards.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/18615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/586"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=18615"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/18615\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/196260"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=18615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=18615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=18615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}