Software-update: Microsoft Visual Studio 2019 16.6.0

Microsoft Visual Studio logo (80 pix) Microsoft heeft versie 16.6.0 van Visual Studio 2019 uitgebracht. Deze populaire programmeerontwikkelomgeving beschikt over handige opties om het programmeren in onder andere Visual C++, Visual Basic, C#, F#, Python en R gemakkelijker te maken. De complete lijst met de veranderingen in de 2019-uitgave kun je nalezen in de bijbehorende releasenotes. Hieronder is te vinden welke verbeteringen Microsoft heeft doorgevoerd in deze versie:


Improved Doxygen/XML comment generation: Automatically generate Doxygen or XML doc comment stubs by typing "///" or "/**" above functions. These are now displayed in Quick Info tooltips as well.

Generate and consume Doxygen-style comments

Ninja support for CMake for Linux/WSL: Use Ninja as the underlying generator when building CMake projects on WSL or a remote system. Ninja is now the default generator when adding a new Linux or WSL configuration.

Debug templates for remote CMake debugging: We've simplified the templates for debugging CMake projects on a remote Linux system or WSL with gdb.

Initial support for C++20 concepts: IntelliSense now recognizes C++20 concepts and suggests them in the member list.


Enable attaching the Snapshot Debugger without requiring a restart: Snapshot Debugger can now be installed on Azure App Services (ASP.NET Core 3.1) without requiring a restart, allowing you to debug and diagnose live issues without interruption to your service! Attaching to Snapshot Debugger for the first time would prompt an install of the Snapshot Debugger site extension on your Azure App Service deployment, which required a restart.

User experience improvements for Decompilation: The decompilation process will use existing PDBs to produce better names for local variables.

Git Productivity
  • Clone a repository that contains only one solution, and that solution is automatically loaded after clone completes.
  • TSServer Progress Bar: As language service opens a TypeScript project, the user will be able to see the progress of the configured project being opened up, in the Background Tasks Widget.

  • New Multi-target JavaScript/TypeScript debugging and Service Worker Support: The JavaScript/TypeScript debugger now supports debugging service workers, web workers, iFrames, and your page JavaScript all at the same time! In addition, the new debugging experience adds support for debugging your back-end node server applications and client-side JavaScript in the browser simultaneously. This feature is still experimental. You can enable the new debugging experience in the Debugging options menu

  • The implementations of Signature Help and Go To Definition have been updated to better support LiveShare scenarios.

Microsoft Fakes for .NET Core and SDK-style projects

Microsoft Fakes now supports .NET Core! Many users want to migrate their apps and testing suites to .NET Core and now a huge part of that process is possible with Fakes support for .NET Core. You can enable this feature in Tools > Options > Preview Features. Fakes is a mocking framework that helps isolate your tests by mocking certain parts of your product code with stubs or shims. This mocking helps untangle a test from your product code so it can focus on testing only what it is relevant to a given test.


List View: With the new Find in Files experience, we got feedback that the previous result format (flat text without formatting) was useful for certain uses. The List View is now available in the results panel to access the results in the previous format.

Repeat Find: The results window from a Find in Files operation now has a "Repeat Find" button. This button will take all the options used for a search and re-populate the Find in Files panel with them. This makes it easier to repeat a search after making some changes or to tweak a search to help narrow down the results. While focus is in the Results window, type Alt+R then hit Enter to immediately repeat the search.

.NET Productivity

Add explicit cast code fix: There is now a code fix to add an explicit cast when an expression cannot be implicitly cast. Place your cursor on the error and press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Add explicit cast.

Simplify conditional expressions refactoring: Simplify conditional expressions by removing unnecessary code. Place your cursor on the conditional expression. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Simplify conditional expression.

Convert regular string literals to verbatim string literals refactoring: Place your cursor on the regular string literal. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Convert to verbatim string.

Convert verbatim string literals to regular string literals refactoring: Place your cursor on the verbatim string literal. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Convert to regular string.

Bulk configure the severity level of analyzer categories directly through the editor: Place your cursor on the error, warning, or suggestion and type (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select suppress or Configure issues. Then select Configure severity for all {category name} analyzers. This will update your existing EditorConfig file with the category’s new severity.

Quick Info style support for XML comments that contain returns and value tags: Hover your cursor over the element. Quick Info will then display the supported styles from the XML comments above your code.

Add file headers to existing files, projects, and solutions with EditorConfig: You will first need to add the file_header_template rule to your EditorConfig file. You will then need to set the value to equal the header text you would like applied.

Next, place your cursor on the first line of any C# or Visual Basic file and type (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Add file banner. If you would like to apply the file header to all files of an existing project or solution, select Project or Solution under the Fix all occurrences in: option.

Web Tooling

New experience for configuring Azure services and emulators: The Connected Services tab now offers a new experience for connecting your application to Azure services such as Azure SQL, Storage, Key Vault and many others. It helps you provision new instances (or select existing ones) and ensures your code has the most update to date NuGet packages and the right startup configuration code. Wherever possible local emulation options are also available.

Updates to the Publish experience: Publishing now offers a new wizard-like expierence for creating new publish profiles that guides you through your options. Even if some Visual Studio components are missing from your installation you will still have access to the full set of publishing targets and options; any missing components will be identified and requested to be installed on demand. The publish profile summary page has also been updated to match the experience available under the Connected Services tab for configuring dependencies to Azure services.

Windows Forms

Windows Forms Designer for .NET Core

The Windows Forms designer for .NET Core projects is now available. To enable the designer in Visual Studio, go to Tools > Options > Environment > Preview Features and select the Use the preview Windows Forms designer for .NET Core apps option.

In this release we have made the following improvements, including support for additional controls:

  • Support for all Dialogs controls, PropertyGrid, HScrollBar, VScrollBar, DomainUpDown and TrackBar
  • Drag-and-drop improvements
  • Selection improvements
  • Stability and bug fixes
WPF/UWP Tooling

Azure Key Vault in the Packaging Wizard: UWP developers can now sign their app packages with code signing certificates directly from Azure Key Vault in the packaging wizard. All that is required is the URI of the Key Vault and the correct permissions for your Microsoft account. The chosen certificate will be imported to the user’s local certificate store where it can be used for signing. Local password protected certificates can also now be decrypted with secrets from a Key Vault.

XAML Hot Reload and the Live Visual Tree now support attaching to multiple processes at the same time. This helps scenarios such as when a solution starts multiple WPF/UWP projects at the same time or if you’re UWP app is using multi-instancing. To make this work we’ve updated the Live Visual Tree with a new top-level process node to group elements from the same process together.

Toolbox now supports NuGet packages with multiple VisualStudioToolsManifest.xml files: This enables NuGet package authors to change which controls are shown in the Toolbox based on the framework/platform version of the referencing project. Toolbox will show the items from the manifest whose tools subdirectory Target Framework Moniker (TFM) best matches the project’s target framework/platform. It will fall back to the manifest in the root of the tools directory if no TFM match is found. This root manifest is also needed for compatibility with older versions of Visual Studio.

New Setting: XAML Hot Reload on Save. XAML Hot Reload by default sends all valid XAML changes in real-time to your running app. In this release we've added a new setting (Debug > Options > General > Enable UI Debugging Tools for XAML > Apply XAML Hot Reload on document save) that gives developers a choice in how this behavior works. When this setting is enabled XAML Hot Reload changes will not apply until the file that is being edited is saved.


XAML Hot Reload can now reload just what changed on your page, instead of the whole page. Try it out by changing the "Reload Options" setting in Tools > Options > Xamarin > Hot Reload.

View a Live Visual Tree of elements on the page in your running application. Open the Live Visual Tree during a XAML Hot Reload debug session through Debug > Windows > Live Visual Tree.

Override your emulator's settings like dark/light mode, font sizes, and more using the Environment Settings pad. Open it during a XAML Hot Reload session via Debug > Windows > Environment Settings.

You can use a Lint configuration file and select from even more IntelliSense suggestions when editing your Android XML.

Top Issues Fixed in Visual Studio 2019 version 16.6.0
  • When New Git experience feature flag is enabled, a message will appear in Team Explorer guiding users to the new Git tool window.
  • Fix for intermittent UI delay while closing VS when WinForms .NET Core designer is in open state.
  • Fixed issues creating projects using type providers, throwing missing method exception at runtime.
  • Fixed project creation for .NET framework projects.
  • New find in files experience respects options in Tools-Options-Find and Replace pane.
  • Fixed a bug where Git repository does not change when closing a Folder and opening a Solution.
  • Fixed bug when building iOS app using full debug symbols.
  • Added back browing of Mac Distribution provisioning profiles and certificates from Windows.
  • Fixed a bug causing Visual Studio 2019 to stop responding when working with Xamarin projects on certain scenarios.
  • Added keyboard shortcut for "Copy with Headers" option in SQL Script Results Grid
  • SSDT users will now be able to set and view sensitivity properties for all version above SQL Server 2008
  • Improve Connection Properties dialog for accessibility users.
  • Fixed occasional crashes when using Tested By Code Lens indicator.
  • Ensure auto population of text in Find in files is as per legacy behavior.
  • Ensure left arrow key behavior in find in files is correct.
  • An issue blocking C++ users of the C++20 Ranges library from using algorithms.

Versienummer 16.6.0
Releasestatus Final
Besturingssystemen Windows 7, Windows Server 2008, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016
Website Microsoft
Licentietype Betaald

Reacties (23)

Wijzig sortering
Microsoft Fakes now supports .NET Core! Many users want to migrate their apps and testing suites to .NET Core and now a huge part of that process is possible with Fakes support for .NET Core.
Zijn er veel developers die Microsoft Fakes gebruiken? Ik ervoer de stub generatie van Fakes als een kriem vergeleken met populaire mocking frameworks als Moq of NSubsitute. En is de noodzaak van shims in je applicatie niet een teken van slecht ontkoppeld design?

Mooi om te zien dat er gewerkt wordt aan de quick refactorings. Ik gebruik nu eigenlijk nog altijd ReSharper, omdat die nog net wat meer ondersteuning biedt voor allerlei refactor-acties. Die noodzaak wordt steeds minder, naarmate Microsoft meer van dit soort quick refactorings gaat toevoegen.
Fakes is inderdaad (imho) niet heel best, maar het word best veel gebruikt in 'oudere' .Net software (althans, als de opdrachtgevers waar ik gezeten heb enigszins een indicatie zijn). Het feit dat het nu ook werkt in .NET Core is 1 drempel minder voor een migratie.

Maar voor nieuwbouw zou ik het zelf ook niet meer gebruiken nee.
Inderdaad, op het werk ook R#, maar omdat ie zo focking traag is met grote files/projecten. Zet ik 'm vaker eens uit, meestal mis het niet eens...
Zijn er veel developers die Microsoft Fakes gebruiken? Ik ervoer de stub generatie van Fakes als een kriem vergeleken met populaire mocking frameworks als Moq of NSubsitute.
Fakes is ook niet bedoeld om NSubstitute of Moq te vervangen.

Het is een methode om static of anderzijds unmockable zaken toch te mocken te maken. Dat is inderdaad voor legacy scenario's bedoeld waarbij je een static class niet zomaar kan wegrefactoren.
Eindelijk mijn bug gefixed in VC++ oOo
Om eerlijk te zijn. Dat gevoel lijkt me fakkinvet! Goed bezig!
Hehe gewoon VS gebruiken en bugs rapporteren, heb er zo ook al een paar "Gefixed" gekregen :)
Die van mij worden redelijk snel gebounced. Nochtans vragen om even constexpr voor een al bestaande inline constructor te zetten leek me toch niet zo heel moeilijk.
MFC en GDI+ worden volgens mij ook helemaal niet meer gemaintaind.

Daarnaast is het natuurlijk niet even een kwestie van ergens conctexpr voor zetten. Het zou raar zijn om dat bij een paar functies te doen, maar niet overal waar dat kan. En dat laatste kost toch wel behoorlijk wat tijd, met mogelijke fallout. Je kunt je afvragen of het de moeite waard is.

Het is jammer dat constexpr überhaupt nodig is als specifier, zou niet hoeven
Om het overal neer te zetten is een stap verder maar met de constructors kan je in ieder geval constexpr globals aan maken wat we nodig hebben voor defaults of invalid values. Waarschijnlijk maakt het voor de release mode niet uit (want al 'constexpr geoptimaliseerd') maar constexpr is een garantie dat het gebeurt zoals iemand anders al eens opmerkte. Als ik bij MS had gewerkt had ik het wel even gedaan :) .

Die laatste zin ben ik het wel mee eens. Ik ben even de crux vergeten van de tegenargumenten.
Meh, ik denk dat ik sinds VS 2002 al een stuk of 50 bugs heb gereport. Wat vooral fijn is, is dat sinds 2017 (geloof ik?) ze een hele andere release schedule hebben. Vroeger moest je wachten op de volgende Visual Studio voor de wat fundamentelere compiler bugs waarin ze de standaard niet (goed) volgen. Tegenwoordig pushen ze regelmatig minor releases waar naast bugfixes ook gewoon nieuwe features in kunnen zitten.

Nadeel is wel dat er af en toe dus ook wat kapot gaat daardoor, zoals hier het geval was. Installeer je een update, compilet je veder correcte code ineens niet meer 8)7
Dat is zeker vervelend. Zou niet moeten gebeuren. Lijkt me een mooie learning curve om zoiets tegen te komen.
Het kan nu toch niet aan mij liggen gedachtes... haha

[Reactie gewijzigd door Core2016 op 27 mei 2020 18:02]

Helaas is 'git auto stage' nog steeds niet uit te zetten.. Dat is mijn grootste pet peeve met het werken met git in VS. In VSCode is het wel uit te zetten, maar in de grote broer helaas nog niet..

Soms gaat hierdoor (debug) [web|app].config configuratie mee in een commit. Weliswaar kun je de commit terug draaien, maar dat vereist een nieuwe commit als het niet meer de laatste commit is. Hierdoor blijft het onderdeel van de geschiedenis.

Hierdoor moet ik regelmatig Pull Request als een rebase accepteren zodat alle commits op de PR worden plat geslagen. Helaas verlies je hierdoor ook weer informatie welke je normaal wel wilt hebben om middels git blame te achterhalen wie een bug heeft geintroduceerd..

Wij hebben nu git source control in VS disabled en moet men 'git bash' gebruiken. Dat heeft als voordeel dat men nu git wel beter begrijpt..
Ik ben sowieso niet echt voor source control in een IDE. Maar je zou toch iets van sourcetree kunnen gebruiken?

Sourcetree met TortoiseMerge is voor elke developer te begrijpen
Je weet waar de I van IDE voor staat? ;)
Ja, maar ik weet ook hoe de version control van VS werkt ;)
Je kan gewoon git kiezen toch, dan wordt er gebruik gemaakt van de git binaries, maar dan integrated...
Huh? Die optie zal wel uit te zetten zijn, want ik heb dat nog nooit gezien.
Nee, dat is het helaas nog steeds niet.

Hier is een link naar de issue op de Microsoft website: https://developercommunit...o-disable-auto-stage.html
Maar ik bedoel, ik stage altijd zelf (of commit alles). Het stagen gaat niet vanzelf. Is het geen git instelling?
In Visual Studio als je zelf niets hebt gestaged, maar je wel wijzigingen hebt, dan doet visual een auto stage. Visual studio maakt ook bijvoorbeeld eventueel een remote branch aan als deze nog niet bestaat..
Oh zo, ik heb best wel vaak dat ik niet alles wil committen, maar dan stage ik wat ik nodig heb. Vind het niet heel onlogisch oid.
Ik zou graag een optie zien welke auto stage disabled (mag van mij verder standaard enabled zijn) zodat je altijd expliciet moet stagen zoals je dat ook moet vanaf de cmd..

Maar er zijn wel meer kleine dingetjes met VS git integratie welke ervoor zorgen dat ik net niet lekker er mee kan werken. Zo zou ik ook graag zien dat je (optioneel) na een sync, weer terug gaat naar de changes tab..

Kies score Let op: Beoordeel reacties objectief. De kwaliteit van de argumentatie is leidend voor de beoordeling van een reactie, niet of een mening overeenkomt met die van jou.

Een uitgebreider overzicht van de werking van het moderatiesysteem vind je in de Moderatie FAQ

Rapporteer misbruik van moderaties in Frontpagemoderatie.

Op dit item kan niet meer gereageerd worden.

Nintendo Switch (OLED model) Apple iPhone SE (2022) LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S22 Garmin fēnix 7 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack,, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.


Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details


    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details