.NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug number, which acts as a useful unique ID for each change (can be used to report issues or when calling Microsoft Support).
* When using RSACng (or another class which directly or indirectly uses RSACng) to perform encryption using RSAEncryptionPadding.Pkcs1 when the private key is stored on a smartcard (or other hardware security module) an exception of System.Security.Cryptography.CryptographicException: The parameter is incorrect. at System.Security.Cryptography.NCryptNative.DecryptData[T](SafeNCryptKeyHandle key, Byte[] data, T& paddingInfo, AsymmetricPaddingMode paddingMode, NCryptDecryptor`1 decryptor) [299303] [Added: May 2017]
* Ngen emits debug section mapping IL to native [145669]
* ICorProfiler implementations can apply metadata changes during rejit [145801]
* ICorProfilerInfo API gives access to PDB content for dynamic assemblies, so profilers can show source for callstack frames [145817]
* Fixed a x64 JIT bug in exception handling [93398]
* Windows runtime metadata export tool allows for major assembly versions greater than 255 [101784]
* Fixed out of order execution caused by byte packed class optimization [114744]
* CLR writes inner exception information to event log for unhandled exceptions [119369]
* Access violations are easier to debug [119373]
* Fixed access violation caused by incorrect spill reload of putarg_reg(this) [134106]
* Improved performance in EventSource manifest generation [134302]
* Check for OS AVX support before using AVX instructions [105782]
* Build properly fails when referring to non-generic EventHandler in public surface in managed winmd components [121641]
* Fixed a memory leak in native CLR CBindingInput [121931]
* Fixed a crash on attach/detach with IntelliTrace [141847]
* Windows runtime metadata export tool allows for C# UAP WinRT project to reference a C++ UAP WinRT project that references the mobile extensions SDK [142092]
* Fixed stack overflow in System.Numerics [143951]
* Fixed bad value numbering for pointer math leading to incorrect CSE optimization [143960]
* Fixed RyuJIT back-compat issue [143967]
* Fixed a case where a function could get passed a 2^32-1 parameter value instead of -1L [144065]
* Fixed a crash in dynamic methods using generic value type parameters [145137]
* Fixed a memory leak in mscoreei!RuntimeRequest::ComputeVersionStringThrowing [145389]
* Fixed missed cast during binary XOR operation [142659]
* Profiling event listener sees enums as names rather than numbers [142794]
* Fixed optimization that was incorrectly using a register value for a member variable [142798]
* Fixed bad codegen caused by turning on GSCookie check [145632]
* Fixed access violation in Compiler::fgValueNumberBlock while jitting [145643]
* All floating point reg-to-reg moves use movaps instead of movss/sd [145776]
* Added a way to facilitate specifying the ratio of compacting vs sweeping GCs [145709]
* Free list damage count isn't incorrectly overwritten [145712]
* Improved performance of x64 RyuJIT [145718]
* Mitigated "insufficient memory within specified address space range" errors [145720]
* Fixed unnecessary decommit on the ephemeral segment [145768]
* Fixed an access violation in VB Jit32 codegen when accessing an array expanded by ReDim [142485]
* Improved hash function for float and double in value numbering [142492]
* Fixed an incorrect Assertionprop optimization on legacy x86 JIT that changes a negative zero into a positive zero and impacts the 32-bit Roslyn compiler [142253]
* Improved performance of parallel binary file deserialization [141896]
* Fixed an issue with F# applications that target FSharp.Core 3.1 and .NET 4.5.2 causing a FatalExecutionEngineException when deployed to a machine with .NET 4.6 installed [142619]
* Fixed an issue with x64 POINTF structure passing during a tail call [145688]
* Fixed an issue with !sos.heaptat always looking for unrooted information regardless on if the -iu switch is passed [145696]
* EventLog entry displays the exception type and stack trace string in the proper order [145642]
* Fixed a bug that prevented users from using NGen on non-Microsoft signed assemblies [147703]
* X509Certificates now support Elliptic Curve Digital Signature Algorithm (ECDSA) [145702]
* Fixed an issue that caused local variables not to show up in X++ Debugging [145571]
* Fixed RyuJIT optimizer causing incorrect result [110557]
* Vertical scrollbar's Maximum is in sync with DataGridView's total height if the grid is populated while disabled [127329]
* CancelButton or mnemonics respect Control.CausesValidation [144357]
* Fixed a possible index out of range exception in ThreadContext when using custom MessageFilter [145665]
* Fixed a null reference exception in System.Windows.Forms.ToolTip [145763]
* Fixed the Categories name visibility in the Table/Columns Collection Editor when using high contrast scheme [145631]
* Fixed several VisualStudio Designer Crashes [145639], [145710], [145652]
* Fixed the size of the text for the Generating Previews dialog of the PrintPreviewControl from being cropped when scaling up to 500% in HDPI mode [145775]
* Fixed the icons in the toolbox when scaling above 100% [145824]
* If two WPF applications that target Side by Side (SxS) .NET versions (3.5 and 4.X) are loaded in the same process issues can occur on touch/stylus enabled machines. A common example of this is loading VSTO add-ins written in WPF. This is due to an issue with choosing the correct PenIMC.dll version for each application. This fix allows WPF to properly differentiate between both DLLs and function correctly. [362710] [Added: May 2017]
* If two WPF applications that target Side by Side (SxS) .NET versions (3.5 and 4.X) are loaded in the same process issues can occur on touch/stylus enabled machines. A common example of this is loading VSTO add-ins written in WPF. This is due to an issue with choosing the correct PenIMC.dll version for each application. This fix allows WPF to properly differentiate between both DLLs and function correctly. [377649] [Added: May 2017]
* In some situations, it is possible that WPF attempts to process a touch/stylus input with a null StylusDevice. This can cause a NullReferenceException. This fix checks for this issue and guards against it. [378295] [Added: May 2017]
* A WPF application with a virtualizing list control (ListBox, DataGrid, TreeView, etc.) can encounter an ArgumentNullException when scrolling to an item whose size has substantially decreased since the last time it was re-virtualized. [273803, 282662, 282664, 367282, 367285] [Added: May 2017]