Software-update: Microsoft Visual Studio 2019 16.9.0

Microsoft Visual Studio logo (80 pix) Microsoft heeft versie 16.9 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. In versie 16.9 heeft Microsoft de volgende veranderingen en verbeteringen doorgevoerd:

  • Address Sanitizer:
    • Our address sanitizer support on Windows is now out of experimental and has hit general availability.
    • Expanded RtlAllocateHeap support, fixed a compatibility issue with RtlCreateHeap and RtlAllocateHeap interceptors when creating executable memory pools.
    • Added support for the legacy GlobalAlloc and LocalAlloc family of memory functions. You can enable these interceptors with ASAN_OPTIONS=windows_hook_legacy_allocators=true.
    • Updated error messages for shadow memory interleaving and interception failure to make problems and resolutions explicit.
    • The IDE integration can now handle the complete collection of exceptions which ASan can report.
    • The compiler and linker will suggest emitting debug information if they detect you're building with ASan but not emitting debug information
  • You can now target the LLVM version of the OpenMP runtime with the new CL switch /openmp:llvm. This adds support for the lastprivate clause on #pragma omp sections and unsigned index variables in parallel for loops. The /openmp:llvm switch is currently only available for the amd64 target and is still experimental.
  • Visual Studio CMake projects now have first class support for remote Windows development. This includes configuring a CMake project to target Windows ARM64, deploying the project to a remote Windows machine, and debugging the project on a remote Windows machine from Visual Studio.
  • The version of Ninja shipped with Visual Studio on Windows has been updated to version 1.10. Please see the Ninja 1.10 release notes for details on what is included.
  • The version of CMake shipped with Visual Studio has been updated to version 3.19. Please see the CMake 3.19 release notes for details on what is included.
  • Marked many lock/guard types in the STL as nodiscard:
  • IntelliSense:
  • MSVC now determines the correct address sanitizer runtimes required for your binaries. Your Visual Studio project will automatically get the new changes. When using address sanitizer on the command line, you now only need to pass /fsanitize=address to the compiler.
  • Visual Studio's Connection Manager now supports private keys using the ECDSA public key algorithm.
  • Updated the versions of LLVM and Clang shipped in our installer to v11. Read the release notes for LLVM and Clang for more information.
  • Visual Studio will now use CMake variables from toolchain files to configure IntelliSense. This will provide a better experience for embedded and Android development.
  • Implementation of the More Constexpr Containers proposal, which allows destructors and new expressions to be constexpr. This paves the way for utilities like constexpr std::vector and std::string.
  • Extended support for C++20 modules IntelliSense, including Go To Definition, Go To Module, and member completion.
  • Abbreviated function templates are now supported in the MSVC compiler.
  • There is now support for Edge Chromium based WebView2 JavaScript/TypeScript debugging for applications such as WPF, WinForms and WinUI 3 projects. This can be enabled by selecting the JavaScript debugger from the Project Properties dialog box. Details on how to get started to can be found here
  • Added a new Auto Analyzer that inspects threads for deadlocks.
  • Added a new Auto Analyzer that inspects the .NET Core Finalizer queue and detects potentially blocking objects.
  • Visual Studio now filters out redundant repeating frames from the call stack when the debugger stops on a StackOverflow Exception. It is now possible to see the base of the stack where an infinite recursion originated, which hopefully makes it easier to investigate these kinds of bugs.
  • Added new dynamic instrumentation scenario that is faster (doesn't require VSInstr) and allows .NET Core applications to be instrumented without needing PDBs.
.NET Productivity
  • There is now IntelliSense completion for preprocessor symbols.
  • Solution Explorer now displays the new .NET 5.0 Source Generators.
  • Go To All won't display duplicate results across netcoreapp3.1 and netcoreapp2.0.
  • Quick Info now displays compiler warning IDs or numbers for suppressions.
  • Using directives will now automatically get added when copying and pasting types to a new file.
  • IntelliSense completion will now automatically insert a semicolon as a commit character for object creation and method completion.
  • Semantic colorization for C# 9.0 records.
  • Refactoring that removes unnecessary discards.
  • Refactoring that converts a verbatim and regular string to an interpolated string preserving curly braces that were intended to go in the output.
  • Code fix in Visual Basic that removes the shared keyword when you convert methods that are shared to a module.
  • A refactoring that suggests using new(…) in non-contentious scenarios
  • A code fix that removes redundant equality expressions for both C# and Visual Basic
  • The .NET Code Style (IDE) analyzers can now be enforced on build
  • The Syntax Visualizer shows the current foreground color for enhanced colors
  • A new tooltip when hovering over the diagnostic ID for pragma warnings
  • When you type the return key from within a comment the new line is now automatically commented out
  • Inline parameter name hints enhancements
  • .NET Core Debugging with WSL 2
Test Explorer audio cues and accessibility updates
  • You can now configure audio cues with the Test Explorer, the Group By menu is more accessible for screen readers, and viewing long test output is easier with clickable links opening log files directly.
Experimental Razor Editor Updates
  • HTML and C# semantic colorization
  • Renames of C# symbols reflected in closed Razor files
  • More C# light bulbs in Razor files
  • Further improvements to mixed content formatting in Razor files
.NET Web Tools Web Tools
  • Enhanced .NET support for Azure App Configuration as a Connected Service
  • Manage your application's configuration settings and feature flags by integrating Azure App Configuration as a Connected Service
XAML Tools (WPF, WinUI, UWP & Xamarin.Forms) MVVM Tooling
  • Improved MVVM Support: In this release, we have introduced Lightbulbs in the XAML Editor to generate properties and commands in available view-models. We have also added Lightbulbs to help set the design DataContext in XAML to available view-models to improve binding IntelliSense.
Xamarin.Forms In this release we’ve made multiple improvements for Xamarin.Forms developers:
  • XAML Hot Reload “changes only” mode is now the default for Xamarin.Forms 5.x projects: Starting with Visual Studio 16.9 XAML Hot Reload “changes only” mode is now the default XAML Hot Reload experience for projects targeting Xamarin.Forms 5.x or higher. Projects targeting 4.x will automatically fallback to “full page” XAML Hot Reload as “changes only” is only compatible with Xamarin.Forms 5.x or newer. If you are using Xamarin.Forms 5.x and wish to use the old “full page” Hot Reload mode for some reason, you can do so by going to Hot Reload settings under Tools > Options > Debugging > Hot Reload.
  • XAML Hot Reload status updates in output window: Xamarin.Forms customers using XAML Hot Reload can now see more details on what is happening with the XAML Hot Reload pipeline using the output window. To get started, open the output window with View > Output and select Xamarin Hot Reload under Show output from at the top of the window.
  • Xamarin.Forms + UWP – resolved System.ExecutionEngineException: Starting with the release of Visual Studio 2019 version 16.8 we inadvertently introduced a runtime exception that would trigger System.ExecutionEngineException errors when developers would be debugging Xamarin.Forms app that target Windows (UWP). Starting with this release (16.9 Preview 4) and in combination with an update to Microsoft.NETCore.UniversalWindowsPlatform NuGet (version 6.2.12+) this issue should now be resolved. Note: This fix is not only for Visual Studio 2019 version 16.9. Updating your projects to use the new NuGet package should resolve this issue for Visual Studio version 16.9 as well.
Git Productivity
  • We've refreshed the Preview Feature flag for the new Git UX with a built-in Give Feedback link that directs you straight to the product team.
  • Team Explorer Home and Connect pages show detailed content to transition to the new Git UX.
  • Support for custom remotes in branch push notifications.
  • Double click a branch in the Git Repository window to checkout.
  • Commit changes with the keyboard shortcut Ctrl+Enter.
  • Push all tags from the Git Changes window.
Visual Studio Installer
  • The Visual Studio Installer no longer elevates on launch
  • The Visual Studio Installer now supports HDR displays
  • The Visual Studio Installer supports the Navigator screen reader
  • Installer updates have been streamlined into the Visual Studio update
  • The Visual Studio Installer adds dark theme support

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

Reacties (22)

Wijzig sortering
Handig om te weten: dit is de nieuwe servicing baseline ("LTS" versie).

version 16.9 => date to be determined
version 16.7 => April 2022, 12 months after 16.9 was released
version 16.4 => October 2021, 12 months after 16.7 was released
version 16.0 (out of support) => January 2021, 12 months after 16.4 was released


[Reactie gewijzigd door Styxxy op 3 maart 2021 18:46]

Waarom zou je bewust met een oude vs2019 versie blijven werken?
Een LTS (long time support) versie, voor Visual Studio heet dat tegenwoordig dus servicing baseline, heeft als voordeel dat deze voor lange(re) tijd updates en (security) patches krijgen. Je kan dus kiezen om langere tijd op een bepaalde versie te blijven.

Waarom je dit zou willen doen? Dit is voornamelijk vanuit het perspectief van IT binnen een bedrijf, dat ik hieronder beschrijf.

Als je veel ontwikkelaars hebt, wil je graag de versies onder controle hebben dat er gebruikt worden. Dit om conflicten tussen verschillende versies te vermijden, waarbij de ene developer een nieuwere versie heeft dan een andere, en daardoor functionaliteiten gebruikt (denk aan bv een nieuwe C# versie!) die de developer met een oudere versie niet kan gebruiken.

Daarnaast heb je misschien ook eigen build infrastructuur draaien. Hier wil je waarschijnlijk ook een bepaalde (vaste) versie op hebben draaien, idealiter in synchronisatie met de versies die de developers gebruiken. Dit om eenzelfde reden als hierboven vernoemd.

Vaak verwachten ook de (developer) medewerkers dat hun "werkplek" (hun machine en de software dat er op staat) vanuit de centrale infrastructuur beheerd, gepatcht, ... worden. In dit geval is het handiger om op een fixed "LTS" versie te blijven (van de non-LTS versies zijn er geen aparte downloads beschikbaar).

Je kan ook eveneens langer op een servicing baseline blijven, zonder dat je constant moet updaten (om onder andere security patches te krijgen). Hierbij hoef je niet op de allernieuwste "0" versie te updaten met mogelijke issues die erbij komen. Je kan updates naar een volgende servicing baseline plannen, analyseren en communiceren.

Het is een keuze dat je moet maken, maar in een bedrijf wil je vaak risico's beperken.

Binnen het bedrijf dat ik werk, heb ik duidelijke afspraken gemaakt en om bovenstaande reden bewust gekozen om op servicing baselines te blijven. (We zijn 2-tal maanden geleden van 16.4 naar 16.7 gegaan; en ik wacht nog enkele weken alvorens de update naar 16.9 te bekijken/plannen.)

In bovenstaande tekst lijken misschien sommige "risico's" wat bij de haren getrokken. Echter in de jaren dat ik al werk bij mijn huidige bedrijf, heb ik al enkele keren de genoemde problemen zien gebeuren. En dat zorgt echt voor veel frustratie en problemen (plus ook budgetaire == geld (!) impact).

Voor persoonlijk/privé-gebruik zit ik wel op de allerlaatste versie :) .

[Reactie gewijzigd door Styxxy op 3 maart 2021 23:25]

Bedankt voor de uitgebreide uitleg!
Ik werk bij een niet al te groot bedrijf en kan zelf software installeren en updates uitvoeren. Maar ik zie dit inderdaad wel fout gaan als er iemand laks is met updaten.
Een programma dat ik als enige onderhoud had ik gelijk bijgewerkt naar .NET 5 toen dit uitkwam, maar omdat de buld server nog niet was bijgewerkt ging dat fout.
Interessant, ik heb dit zelf nog niet binnen een bedrijf meegemaakt. Enige reden om niet over te gaan naar de laatste versie zou bugs in die versie zijn.
"een nieuwe C# versie" wordt in mijn ervaring beperkt door het framework van het project. C.q. als je project .net framework 4.7 is, kan je bijv. geen C#7.1 en later gebruiken.
Ik heb wat rare issues met nuget package manager in deze release. Schermen erin lijken maar half te refreshen. Ik raad iedereen aan nog even te wachten met installeren, want het is erg onhandig (pakketten ontbreken in installed lijst, van anderen claimt vs dat hij in meerdere projecten geïnstalleerd is, waar dat echt niet zo is. Ook rapporteert hij daar versienummers die niet bestaan voor dat pakket..)

Laatste preview deed het een stuk beter.

[Reactie gewijzigd door jkommeren op 3 maart 2021 19:42]

Begin er nou ook last van te krijgen. Soms wel 2 minuten unresponsive als nuget open is.
Ik heb al een issue openstaan bij Microsoft voor de nuget package manager. Blijkbaar is iets flink herschreven.
Ben ik nou de enige die al jaar en dag last heeft van kringeltjes en errors die in de lijst blijven staan.
Of errors die juist NIET worden gedetecteerd tot je gaat builden?

Ik moet zo af en toe de .suo weggooien om het eea fatsoenlijk aan de praat te houden.
Ik werk wel met Winforms, ik weet niet of dat een beetje bij ze naar de achtergrond is gedreven? :|
Je bent niet de enige, ik heb er ook last van. Zelfs op twee machines. Zowel Xamarin als .Net Core. Heb nog geen oplossing gevonden hiervoor.
Me three. Soms alleen effe de solution sluiten en weer openen verhelpt het probleem (tijdelijk)
Ja, in de meeste gevallen wel, alleen is het soms idd hardnekkig.

Je zou zeggen dat ze aan deze basics wat meer aandacht zouden geven. Ipv elke keer meer exotische features erin.
Gebruik je WinForms op .NET Framework of op .NET Core?
. Net framework 4.8.
Omzetten is teveel werk met te weinig voordeel.
Ik kijk al lang niet meer naar de Errors (onderin) veel te veel false positives. Zijn gewoon wpf dingen die hij soms niet begrijpt, maar soms echt compleet willekeurige dingen. Kringeltjes in XAML code gaan soms helemaal niet weg, maar kringeltjes in c# na een succesvolle build bijna altijd wel.

Tip: VSColorOutput extension installeren en kijken naar het Output tabblad (met Build als output filter) tijdens de bouw. Dan kun je meteen op de rode regels klikken waar het fout gaat. Als build = succeeded zit je goed :) Enige annoying ding is dat hij steeds naar de error list terugspringt.

Voor de mede ongelukkigen: hier kun je gelukkig gewoon weer de 16.8.6 release vandaan halen.

Ondertussen ook wat build errors op de build server met 16.9.0. Echt een afrader.

[Reactie gewijzigd door jkommeren op 4 maart 2021 14:57]

Ah ja! Die VSColorOutput was een godsgeschenk! Dat scheelt echt veel zoekwerk :)
Zoals vaker is dit een release die tijdens een event gelanceerd wordt, en die hebben meestal nog wat patches nodig...
en waarom als ik vragen mag?
Ik gebruik tot nu toe zelfs de preview builds zelfs zonder problemen.
ik gok omdat een event een harde datum heeft en niet zoals normaal dat een patch pas live gaat als de functionaliteit af is
Dat vind ik knap. Gebruik meestal ook de preview build, maar heb de release ernaast draaien, en switch vaak terug, want kom genoeg problemen tegen (die ik ook netjes meld)
Ik begrijp je nul moderatie niet, want het is op z'n minst on topic. Maar je hebt in mijn ervaring ook gewoon gelijk.
Het is ook niet voor niets dat binnen een week 16.9.1 gereleased is.
Dank voor je reactie, vooral achteraf blijkt wel dat de reactie op zijn minst relevant was :+

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