What's new in Microsoft .NET Framework 4.8.1

Aug 30, 2022
  • NET Framework 4.8.1 introduces new features in the following areas:
  • Native support for Arm64
  • WCAG2.1 compliant accessible tooltips
  • Windows Forms – Accessibility Improvements
  • Improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology, is a major focus of .NET Framework 4.8.1. For information on accessibility improvements in .NET Framework 4.8.1, see What's new in accessibility in .NET Framework.
  • .NET Framework 4.8.1 adds native Arm64 support to the .NET Framework family. So, your investments in the vast ecosystem of .NET Framework apps and libraries can now leverage the benefits of running workloads natively on Arm64—namely better performance when compared to running x64 code emulated on Arm64.
  • Microsoft has a commitment to providing products and platforms that are accessible to everyone. .NET Framework 4.8.1 offers two Windows UI development platforms, both of which provide developers with the support necessary to create accessible applications. Over the past several releases, both Windows Forms and WPF have added new features and fixed numerous reliability issues related to accessibility. You can read more about the details of what was fixed or added in each release by visiting What’s new in accessibility in .NET Framework.
  • In this release, both Windows Forms and WPF have made improvements to the handling of tooltips to make them more accessible. In both cases, tooltips now comply with the guidelines set forth in the WCAG2.1 content on Hover or Focus guidance. The requirements for tooltips are:
  • Tooltips must display either via mouse hover or by keyboard navigation to the control.
  • Tooltips should be dismissable. That is, a simple keyboard command like Esc should dismiss the tooltip.
  • Tooltips should be hoverable. Users should be able to place their mouse cursor over the tooltip. This enables scenarios like using magnifier to be able to read the tooltip for low-vision users.
  • Tooltips should be persistent. Tooltips should not automatically disappear after a certain amount of time has elapsed. Rather, tooltips should be dismissed by the user moving their mouse to another control or by a keyboard command.
  • In Windows Forms, this support is only available on Windows 11 or later operating systems. Windows Forms is a thin managed wrapper around the Windows API, and the new tooltip behavior only became available in Windows 11. WPF has no operating system version dependencies for its accessible tooltips.
  • WPF had implemented most of the requirements for WCAG2.1 compliant tooltips in .NET Framework 4.8. In this release, WPF improved the experience by ensuring that a tooltip in the current window can easily be dismissed by using the Esc key, the Ctrl key (by itself), or by the combination Ctrl+Shift+F10. The scope of the escape key was reduced in this release to apply only to the current window. Previously it applied to any open tooltip in the application.
  • Windows Forms was the first Windows UI stack created for .NET Framework. As such, it was originally created to utilize legacy accessibility technology, which doesn't meet current accessibility requirements. In this release, Windows Forms has addressed a number of issues. For a complete list of the accessibility related changes, visit What’s new in accessibility in .NET Framework.
  • The highlights of Windows Forms improvements in .NET Framework 4.8.1 are:
  • Text pattern support– Windows Forms added support for the UIA Text Pattern. This pattern enables assistive technology to traverse the content of a TextBox or similar text-based control letter by letter. It enables text to be selected within the control and changed, and new text to be inserted at the cursor. Windows Forms added this support for TextBox, DataGridView cells, ComboBox controls, and more.
  • Address contrast issues– In several controls, Windows Forms has changed the contrast ratio of selection rectangles to be darker and more visible.
  • Fixed several DataGridView issues:
  • The scrollbar names have been updated to be consistent.
  • Narrator is now able to focus on empty DataGridView cells.
  • Developers are able to set the localized control type property for Custom DataGridView cells.
  • The link color for DataGridViewLink cells has been updated to have better contrast with the background.

New in Microsoft .NET Framework 5.0 (Nov 11, 2020)

  • What’s new in .NET 5:
  • NET 5.0 is the next major release of .NET Core following 3.1. We named this new release .NET 5.0 instead of .NET Core 4.0 for two reasons:
  • We skipped version numbers 4.x to avoid confusion with .NET Framework 4.x.
  • We dropped “Core” from the name to emphasize that this is the main implementation of .NET going forward. .NET 5.0 supports more types of apps and more platforms than .NET Core or .NET Framework.
  • ASP.NET Core 5.0 is based on .NET 5.0 but retains the name “Core” to avoid confusing it with ASP.NET MVC 5. Likewise, Entity Framework Core 5.0 retains the name “Core” to avoid confusing it with Entity Framework 5 and 6.
  • .NET 5.0 includes the following improvements and new features compared to .NET Core 3.1:
  • C# updates
  • F# updates
  • Visual Basic updates
  • System.Text.Json new features
  • Single file apps
  • App trimming
  • Windows ARM64 and ARM64 intrinsics
  • Tooling support for dump debugging
  • The runtime libraries are 80% annotated for nullable reference types
  • Performance improvements:
  • Garbage Collection (GC)
  • System.Text.Json
  • System.Text.RegularExpressions
  • Async ValueTask pooling
  • Container size optimizations
  • Many more areas
  • NET 5.0 doesn’t replace .NET Framework
  • .NET 5.0 is the main implementation of .NET going forward and .NET Framework 4.x is still supported.
  • NET 5.0 doesn’t replace .NET Standard
  • New application development can specify the net5.0 target framework moniker (TFM) for all project types, including class libraries. Sharing code between .NET 5 workloads is simplified in that all you need is the net5.0 TFM.
  • For .NET 5.0 apps and libraries, the net5.0 Target Framework Moniker (TFM) combines and replaces the netcoreapp and netstandard TFMs. However, if you plan to share code between .NET Framework, .NET Core, and .NET 5 workloads, you can do so by specifying netstandard2.0 as your TFM. For more information, see .NET Standard.

New in Microsoft .NET Framework 4.8 Early Access Build 3745 (Feb 22, 2019)

  • BCL:
  • Added support for formatting the Japanese first year of era using Gannen 元 when the date pattern not having single quotes around 年. e.g. y年. [777279, mscorlib.dll, Bug, Build:3745]
  • Networking:
  • Fixed domain spoofing vulnerability in .NET Framework and .NET Core which causes the meaning of a URI to change when International Domain Name encoding is applied by disallowing certain Unicode characters during the IDN encoding process - CVE-2019-0657 [694688, System.Private.Uri, Bug, Build:3745]
  • WCF:
  • Made some format changes and added lang attribute to WCF service Health page (like http://localhost:83/Service1?health) and WCF service metadata page (like http://localhost:83/Service1) to improve accessibility. [777308, System.ServiceModel.dll, Bug, Build:3745]
  • WorkFlow:
  • Fixed a vulnerability in the WorkflowMarkupSerializer that allowed "random" code to be executed with certain XOML constructs. If users experience application compatibility problems, there are couple of "opt-out" < appSettings> values that allow users to modify the behavior introduced by this change:
  • <add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
  • Setting this value to "true" completely disables the type checking that is done during deserialization. It takes precedence over the value below.
  • <add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
  • The type checker has a list of hard-coded types that are disallowed by default. Setting this value to "true" allows those hard-coded types. The user can specify a list of unauthorized types on their own by adding the following to the app.config file:
  • <configuration>
  • <configSections>​
  • <sectionGroup name="System.Workflow.ComponentModel.WorkflowCompiler" type="System.Workflow.ComponentModel.Compiler.WorkflowCompilerConfigurationSectionGroup, System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">​
  • <section name="authorizedTypes" type="System.Workflow.ComponentModel.Compiler.AuthorizedTypesSectionHandler, System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>​
  • </sectionGroup>​
  • </configSections>​
  • <System.Workflow.ComponentModel.WorkflowCompiler>
  • <authorizedTypes>​
  • <myAuthorizedTypes version="v4.0">​
  • <authorizedType Assembly="System.Activities.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Activities.Presentation" TypeName="WorkflowDesigner" Authorized="false"/>
  • </myAuthorizedTypes>
  • </authorizedTypes>​
  • </System.Workflow.ComponentModel.WorkflowCompiler>​
  • </configuration>
  • WPF:
  • Added an AppContext switch 'Switch.System.Windows.Controls.ItemsControlDoesNotSupportAutomation' that guards the fix for the automation tree under a plain ItemsControl (previously disclosed Bug 410007). This switch defaults to 'false' for apps that target .NET 4.8, or to 'true' for apps that target earlier versions. [778689, PresentationCore.dll, WindowsBase.dll, Bug, Build:3745]

New in Microsoft .NET Framework 4.8 Early Access Build 3735 (Feb 22, 2019)

  • BCL:
  • Added support for formatting the Japanese first year of era using Gannen 元 when the date pattern not having single quotes around 年. e.g. y年. [777279, mscorlib.dll, Bug, Build:3745]
  • Networking:
  • Fixed domain spoofing vulnerability in .NET Framework and .NET Core which causes the meaning of a URI to change when International Domain Name encoding is applied by disallowing certain Unicode characters during the IDN encoding process - CVE-2019-0657 [694688, System.Private.Uri, Bug, Build:3745]
  • WCF:
  • Made some format changes and added lang attribute to WCF service Health page (like http://localhost:83/Service1?health) and WCF service metadata page (like http://localhost:83/Service1) to improve accessibility. [777308, System.ServiceModel.dll, Bug, Build:3745]
  • WorkFlow:
  • Fixed a vulnerability in the WorkflowMarkupSerializer that allowed "random" code to be executed with certain XOML constructs. If users experience application compatibility problems, there are couple of "opt-out" < appSettings> values that allow users to modify the behavior introduced by this change
  • WPF:
  • Added an AppContext switch 'Switch.System.Windows.Controls.ItemsControlDoesNotSupportAutomation' that guards the fix for the automation tree under a plain ItemsControl (previously disclosed Bug 410007). This switch defaults to 'false' for apps that target .NET 4.8, or to 'true' for apps that target earlier versions. [778689, PresentationCore.dll, WindowsBase.dll, Bug, Build:3745]

New in Microsoft .NET Framework 4.8 Early Access Build 3734 (Jan 29, 2019)

  • ASP.NET:
  • Fixed handling of multi-value HTTP headers that may affect multipart data processing. [726155, System.Web.dll, Bug, Build:3734]
  • For client applications (winforms, WPF, or console apps, etc) the ASP.NET Client Application Services API’s have been hardened against potentially malicious JSON payloads. [727703, System.Web.dll, Bug, Build:3734]
  • Fixed an issue introduced in ASP.NET 4.7, where the unexpected removal of a particular type of cache item can result in an orphaned *.delete file that prevents web applications from running. [750653, System.Web.dll, Bug, Build:3734]
  • BCL:
  • Fixed a serialization exception that occurred when a huge amount of objects were serialized with BinaryFormatter. [761576, mscorlib.dll, Bug, Build:3734]
  • CLR:Added an opt-in config option to disable spin-waiting for a critical section when contended. The change can be opted into in an .exe.config file as follows: [754173, clr.dll, Bug, Build:3734]
  • Prevents applications from COM activating managed types whose GUIDs mismatch the declared CLSID in the registry" [752205, clr.dll, Bug, Build:3734]
  • Fixed deadlocks that could occur when loading exception stack traces in out-of-memory conditions. [748860, diasymreader.dll, Bug, Build:3734]
  • Improved scalability of System.Threading.Timer. Previously System.Threading.Timer had a single global queue that was protected by a single process-wide lock. This can become a scalability problem if Timers are used frequently on multi-CPU machine. This change splits into N per-processor Queues as well as other improvements that improve the performance in a high-scale environment. For compatibility reasons this new code is not activated by default at the present time. It needs to be activated by using .NET Config variable ScalableTimer. [735923, clr.dll, mscorlib.dll, Bug, Build:3734]
  • Fixed the output from the "!u -gcinfo" command in the SOS Debugging Extension [740360, sos.dll, Bug, Build:3734]
  • Customers who are profiling their .NET Framework application will no longer experience leaks on their ICorProfilerCallback9 COM object as ICorProfilerCallback9 COM object is never freed in the destructor of EEToProfInterfaceImpl instance. [742282, clr.dll, Bug, Build:3734]
  • Updated ICorProfilerInfo4::GetILToNativeMapping2 to respect the rejitID field and return the appropriate mapping. [748879, clr.dll, Bug, Build:3734]
  • Fixed storing of instances to the mark stack so that the subsequent code that follows can operate by popping the stack. [750816, clr.dll, clrgc.dll, Bug, Build:3734]
  • Fixed an issue in the JIT with the compilation of methods that use explicit tailcalls. This feature is never used by C# programs but can impact some F# programs. If you are developing an F# application, you may see incorrect results or program crashes. A workaround is to disable tailcalls or use a debug build of your F# program. [754566, clrjit.dll, Bug, Build:3734]
  • Networking:
  • Fixed handling of 1xx interim responses. [711440, System.dll, Bug, Build:3734]
  • Windows Forms:
  • Added Scroll UIA pattern to ListBox items in order to make the control accessible. [742319, System.Windows.Forms.dll, Bug, Build:3734]
  • Fixed ColorEditor, ContentAlignmentEditor, CursporEditor to respond to DPI changed messages and made changes in FontEditor to always open in the 'SystemAware' mode even when the application is in "per-monitor" mode. [746634, System.Windows.Forms.dll, System.Drawing.Design.dll, Bug, Build:3734]
  • Fixed providing correct accessibility information and correct accessible hierarchy of PropertyGrid control. [526702, system.windows.forms.dll, Bug, Build:3734]
  • The screen reader announcement of the WinForms' Menu and ToolStrip expandable subitems has been fixed to not read in items' and scan mode the hidden (collapsed) subitems until corresponding parent Menu item/ToolStrip DropDown item is expanded. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [560840, System.Windows.Forms.dll, Bug, Build:3734]
  • Fixed UI Automation provided accessibility of WinForms DataGridView ComboBox to have appropriate and consistent screen reader announcement for ComboBox interactions. The feature is available starting with Windows 10, version 1709 (RS3). In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [732559, System.Windows.Forms.Dll, Bug, Build:3734]
  • In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • WPF:
  • Improved the memory allocation and cleanup scheduling behavior of the weak-event pattern. To opt-in to these improvements, set AppContext switches to 'true': Switch.MS.Internal.EnableWeakEventMemoryImprovements and Switch.MS.Internal.EnableCleanupSchedulingImprovements. [759824, WindowsBase.dll, PresentationFramework.dll, Bug, Build:3734]
  • Fixed context menus and popups that are sometimes dismissed unexpectedly when shown for the first-time on a non-primary High-DPI monitor [732853, PresentationFramework.dll, PresentationCore.dll, Bug, Build:3734]
  • Fixed a crash due to ElementNotAvailableException arising when scrolling and expanding/collapsing nodes in a TreeView with VirtualizationMode=Recycling, that changes its IsEnabled property while expanding nodes. This crash only occurs when there is a "partial automation client" running (and no full automation client); The chief example is running the app over RDP to a Win10 machine. [705448, PresentationCore.dll, Bug, Build:3734]
  • Fixed a crash in WPF when displaying specific Unicode characters (Unicode codepoint 0xFDFD 47 times or more in a row) [725381, PresentationCore.dll, Bug, Build:3734]
  • Fixed the construction of automation for an ItemsControl to avoid calling the control's IsItemItsOwnContainerOverride method. This avoids crashes in cases where the override has bugs [755174, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3734]
  • Fixed an issue arising when removing an item from a grouped collection view. Any groups that become empty are themselves removed, raising CollectionChanged events before the parent groups' counts have been fully updated. An event handler that calls back into the collection view can get ArgumentOutOfRangeException. [765355, PresentationFramework.dll, Bug, Build:3734]
  • In .NET 4.8 Preview, WPF programs that create many RenderTargets (e.g. RenderTargetBitmap) can leak GDI handles and memory eventually resulting in an OutOfMemoryException from System.Windows.Media.Composition.DUCE+Channel.SyncFlush(). This was due to a COM reference cycle keeping render targets alive in the WPF renderer. Fixed this issue. [756618, wpfgfx_v0400.dll, Bug, Build:3734]

New in Microsoft .NET Framework 4.8 Early Access Build 3646 (Sep 18, 2018)

  • NET Framework Build 3646 Release Notes:
  • Following changes are included in .NET Framework 4.8 build 3646. You can view the full list of .NET Framework 4.8 Changes (all changes, including those in build 3646 and builds upto current date).
  • .NET Framework release notes describe product improvements grouped by product area. Each change includes a Microsoft-internal VSTS bug ID, the primary binary that was updated and whether the change was a bug or a feature.
  • ASP.NET:
  • Fix handling of InputAttributes and LabelAttributes for ASP.NET CheckBox control. [643614, System.Web.dll, Bug, Build:3646]
  • BCL:
  • Upgraded the System.IO.Compression zlib (inside clrcompression.dll) to the latest zlib version 1.2.11 [532490, clrcompression.dll, Bug, Build:3646]
  • Fixed by reducing memory allocations in hashing with the CAPI classes (SHA256CryptoServiceProvider, et al) [548940, System.Core.dll, Bug, Build:3646]
  • Fixed by reducing memory allocations in hashing with the CNG classes (SHA256Cng, et al) [548941, System.Core.dll, Bug, Build:3646]
  • Fixed the issue of System.DateTime returning the wrong time after Windows processes a leap second, by following changes: DateTime and DateTimeOffset will work with the leaps seconds reported by Windows RS5 systems. DateTime.Now and DateTime.UtcNow will always be synchronized with the system time. DateTime and DateTimeOffset will never report the leap second as value 60, instead, it’ll always report it as 59. DateTime and DateTimeOffset operations will continue to work as it used to work, i.e. internally always handle the minutes as 60 seconds which make it compatible with the down levels platforms. [641206, mscorlib.dll, clr.dll, Bug, Build:3646]
  • Fixed WCF de-serialization failure issue of CultureAwareComparer object. Fixed the issue where Applications using WCF to communicate with web services or applications using data contract serialization directly, were experiencing failures to deserialize the CultureAwareComparer object. [645084, mscorlib.dll, Bug, Build:3646]
  • Reduced the impact of the "FIPS mode" bit being set in the OS [653796, mscorlib.dll;System.Core.dll, Bug, Build:3646]
  • Changed default content encryption algorithm of EnvelopedCms to AES. [656518, System.Security.dll, Bug, Build:3646]
  • CLR:
  • Addressed the issue where the JIT compiler optimized away a call to the CompareExchange intrinsic operation under specific conditions [638227, clrjit.dll, Bug, Build:3646]
  • SQL:
  • Fixed a bug where SqlClient login may use an infinite timeout due to truncating a small millisecond timeout to zero when converting to seconds. [647908, System.Data.dll, Bug, Build:3646]
  • WCF:
  • Fixed a high lock contention issue when a large number of threads calling WCF serialization logic [570201, System.Runtime.Serialization.dll, Bug, Build:3646]
  • Windows Forms:
  • Fixed accessible hierarchy of WinForms DataGridView control to represent its currently editing control (inner cell TextBox or ComboBox) as a child of corresponding editing cell. Added support of UIA notifications to DataGridView control. [442899, System.Windows.Forms.Dll, Bug, Build:3646]
  • Fixed the issue of Narrator not announcing the updated value of ComboBox in PropertyGrid. Added support for UIA notification event to PropertyGrid. The feature is available starting with Windows 10, version 1709 (RS3). Added screen reader announcement for PropertyGrid's ComboBox value changes. Added ComboBox's text field update in response of ComboBox selection changes. In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content is shown below (in 642548). [508369, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed improper scaling of auto-sized controls when form is moved to secondary monitor with different DPI scaling. [515971, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed improper scaling of the System-style control's font on a Font-scaled form, when Form is moved to a secondary monitor with different DPI scaling [519500, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed Checkbox and RadioButton control truncation issues control property is set to "FlatStyle". [519530, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed the improper scaling issue of auto-sized controls when form is moved to secondary monitor with different DPI scaling. All Controls (e.g. buttons) in the FlowLayout are placed into the first column with setting the AutoScroll property as True when DPI changed [525684, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed the WinForms control tooltip's issue where it does not appear when moving keyboard focus to the control A control's tooltip is displayed now when a user uses a keyboard to focus the control. This change is effective in applications that have Switch.System.Windows.Forms.UseLegacyToolTipDisplay value and either Switch.UseLegacyAccessibilityFeatures.3 value is set to false or application is built to target .NET version 4.8. App.config file content is shown below (in 642548). [548792, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed font scaling issue when DPI changes. Winforms application and controls, when enabled for """"per-Monitor"""" Dpi aware, they are not scaled according to the dpi of the monitor (or device). Winforms app by default behave like """"System"""" Dpi aware. This was causing Winforms applications/controls to be displayed """"blur"""" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI [597091, System.Windows.Forms.dll, Bug, Build:3646]
  • Added support of Accessibility Invoke pattern to DataGridView Image cell with ability to invoke cell's default action. (in case Image cell is actually an image of a button) In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content is shown below (in 642548). [615721, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed PropertyGrid control scaling issue in Winforms, when parent window DPI changed. PropertyGrid control in the .NET 4.8 runtime will now properly scale according to current running monitor DPI setting. Developer has to opt-in to this fix by either targeting to .NET 4.8 framework or using the .NET 4.8 opt-in config switch. [616661, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed Checkbox and RadioButton controls when set to 'FlatStyle' not being scaled on high Dpi monitors. [638326, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed DataGridView ComboBox accessible hierarchy. Introduced the support of ComboBox UIA notifications. The feature is available starting with Windows 10, version 1709 (RS3). In order for the application to benefit from these changes, the application should be recompiled to target .NET framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. App.config file content: <AppContextSwitchOverrides value=""Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false""/> In order for an application that targets 4.7.3 to opt out from this change, use the following combination of switches: <AppContextSwitchOverrides value=""Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=true""/> [642548, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed RadioButton/ChecKBox controls truncation issue when control property is set to 'Flat/Popup style ' [645041, System.Windows.Forms.dll, Bug, Build:3646]
  • Fixed Button control to scale according to monitor Dpi on which the control is being displayed. [656271, System.Windows.Forms.dll, Bug, Build:3646]
  • Improved loading/rendering time for windows forms controls. [662839, System.Windows.Forms.dll, Bug, Build:3646]
  • Workflow:
  • Fixed an accessibility problem to enable connector label reading on workflow designer [604810, System.Activities.Presentation.dll, Bug, Build:3646]
  • Fixed an accessibility problem to have more texts clearly visible on workflow designer. [613975, System.Activities.Presentation.dll, Bug, Build:3646]
  • Fixed the StackOverflowException issue for larger nesting depth of XOML. Previosuly, if the object nesting depth in the XOML was large, there were possibilities to cause the process to encounter a StackOverflowException. These problems have been resolved. The maximum object nesting depth can be adjusted (default being 300) with the following AppSetting specification in the process that creates and invokes the WorkflowCompiler class: <add key=""""microsoft:WorkflowComponentModel:XOMLMaximumNestedObjectDepth"""" value=""""n""""/> Where n is the new maximum object nesting depth. The possible issues like, random code execution during XOML deserialization (even when CheckTypes parameter is specified to the WorkflowCompiler), have been resolved [631082, System.Workflow.ComponentModel.dll, Bug, Build:3646]
  • WPF:
  • Fixed incorrect result of pressing an arrow key when focus is on a Hyperlink within an item that is not the SelectedItem of the parent ItemsControl. [405208, PresentationFramework.dll, Bug, Build:3646]
  • Fixed issue where internal class PriorityQueue can return items in the wrong order. [442569, PresentationCore.dll, Bug, Build:3646]
  • Fixed usage of resources internal to theme files to avoid potential conflicts. [494194, System.Windows.Controls.Ribbon.dll, Bug, Build:3646]
  • Fixed an issue where automation properties set on an editable RibbonComboBox are not properly announced by screen readers or other assistive technologies. [520147, PresentationCore.dll, Bug, Build:3646]
  • GridViews with focusable Header rows will now not experience keyboard focus landing on the padding column in the header. [559546, PresentationFramework.dll, Bug, Build:3646]
  • Fixed Binding's incorrect use of IList indexer when the source object declares a custom indexer with the same signature [585942, PresentationFramework.dll, Bug, Build:3646]
  • Fixed the issues of certain bounding rectangles, not being drawn corrently. When WPF is run in Per-Monitor Aware mode, certain bounding rectangles around text are drawn incorrectly by Accessibility tools like Narrator. This fix addresses the problem. To opt-into this fix, the target framework version of the Application should be set to .NET 4.8. Alternatively, an AppContext switch - "Switch.UseLegacyAccessibilityFeatures.2" - can be overridden with the value "false" to enable the fix. [617457, PresentationFramework.dll, Bug, Build:3646]
  • Fixed a hang arising during layout of a Grid when UseLayoutRounding=true, high DPI is in effect, grid *-column widths are determined from children with ColumnSpan > 1, and floating-point roundoff is unfavorable. [619978, PresentationFramework.dll, Bug, Build:3646]
  • Fixed an issue where re-entrant calls during shutdown could cause various application faults in WPF applications running on a touch or stylus enabled machine. [633620, PresentationCore.dll, PresentationFramework.dll, Bug, Build:3646]
  • Fixed a memory leak arising when the number of TextBoxes drops to 0. [645497, PresentationFramework.dll, Bug, Build:3646]
  • Fixed the DeadLock issue faced during creation of Spellchecker while Finalizer is ending another Instance. Under certain circumstances, WPF applications using the spell-checker that use custom dictionaries could throw unexpected excpetions and crash [646599, PresentationFramework.dll, Bug, Build:3646]
  • Addressed the issue where GroupItem headers containing an Expander were not announced correctly by screen readers [646633, PresentationFramework.dll, Bug, Build:3646]
  • Fixed WPF issue of not creating correctly-size rendertarget for mixed-mode child windows. Under certain circumstances, per-monitor DPI aware applications that host WPF based controls or plugins were not rendering the WPF window fully [646801, wpfgfx_v0400.dll, Bug, Build:3646]
  • Addressed the restore issue of Window.Left & Window.Top. When WPF applications are running in per-monitor aware mode, saving the value of Window.Left and Window.Top at application end, and restoring the values to a Window prior to creation upon the next application launch, was not restoring the application to the same screen position where it was at the time the application was closed. [646803, PresentationFramework.dll;PresentationCore.dll;WindowsBase.dll, Bug, Build:3646]
  • Fixed the issue where HwndHost does not adapt child-HWND sizing correctly during DPI changes. When WPF is run in Per-Monitor Aware mode, controls hosted within HwndHost were not sized correctly after DPI changes (for e.g., when moving applications from one monitor to another). This fix ensures that controls hosted so are sized appropriately [646805, PresentationFramework.dll;PresentationCore.dll;WindowsBase.dll, Bug, Build:3646]

New in Microsoft .NET Framework 4.8 Early Access Build 3632 (Jul 31, 2018)

  • BCL:
  • Fixed the serialization compatibility issue for CultureAwareComparer class. [621387, mscorlib.dll , Bug, Build:3632]
  • CLR:
  • The ‘shadowCopyVerifyByTimestamp’ setting is now configurable for individual appdomains, as opposed to being a process wide setting. This helps in situations where you may not be the host process, but want to configure a new appdomain that verifys timestamps when shadow copying. [565570, clr.dll, Bug, Build:3632]
  • SQL:
  • Fixed the following issue relevant to SQL: while connecting to Azure SQL DB using .NET 4.7.2, using MultipleActiveResultSets=true in the connection string with System.Data.SqlClient.SqlConnection, async query operations sometimes lead to a bad TDS protocol request stream to be sent from the client, causing the Async Query APIs to fail connection string. [624283, System.Data.dll, Bug, Build:3632]
  • Windows Forms:
  • Added support for UIA notification event to ProgressBar class. The feature is available starting with Windows 10, version 1709 (RS3). [581351, System.Windows.Forms.dll, Bug, Build:3632]
  • Fixed an issue where read-only Status for DataGridView TextBox column is not announced by Narrator. This change is effective in applications that were recompiled to target .NET framework 4.8. [599936, System.Windows.Forms.dll, Bug, Build:3632]
  • Fixed reliability issues in Graphics class when used in RDP sessions. [627739, System.Drawing.dll, Bug, Build:3632]
  • WPF:
  • Addressed the issue of high CPU usage or hangs. This used to happen under certain conditions, where, WPF applications using WindowChromeWorker experience high CPU usage or hangs. [437642, PresentationFramework.dll, Bug, Build:3632]
  • Fixed a bug in the 4.7 algorithm for allocating sizes to *-rows in a Grid. In some cases (e.g. Grid with Height="Auto" containing empty rows), rows were arranged at the wrong position, possibly outside the Grid altogether. [590061, PresentationFramework.dll, Bug, Build:3632]
  • Fixed a potential deadlock in WPF Packaging APIs when multiple threads were both creating and closing large packages simultaneously. [609850, PresentationCore.dll, WindowsBase.dll, Bug, Build:3632]

New in Microsoft .NET Framework 4.8 Early Access Build 3621 (Jun 7, 2018)

  • BCL:
  • Fixed deserialization of Collections which uses culture aware StringComparer. [566534, mscorlib.dll, Bug]
  • Fixed System.Runtime.CompilerServices.RuntimeFeature.IsSupported to correctly account for application compatibility quirk settings for the Portable PDB feature introduced in .NET Framework 4.7.1. [571206, mscorlib.dll, Bug]
  • Fixed the exception by parsing Japanese dates that have the year number exceeding the number of years in that date era. The behavior change will be noticed only if someone tries to parse a date containing some era and year while the year exceeds the last year in that era. [590659, mscorlib.dll, Bug]
  • By default, elevated processes will not read HKCU for managed COM activation information. [592187, clr.dll, Bug]
  • ClickOnce:
  • Fixed Clickonce UI dialogs on high Dpi machines with scale set to more than 100% for both new and existing applications which scale upto 300%. In the scenario where user wants to see legacy images, there is an opt out switch "Switch.System.Windows.Forms.UseLegacyImages" that can be set to "true" in dfsvc.exe.config file. [389534, Microsoft.Build.Tasks.v4.0.dll, Bug]
  • Fixed Mage so it can properly update the identity of dependent assemblies in ClickOnce application manifests. [534286, Microsoft.Build.Tasks.v4.0.dll, Bug]
  • Fixed ClickOnce dialogs (Splash screen, Install progress dialog, Maintenance dialog and Update dialog) have accessibility issues as mentioned in this bug. Fix is for realigning control indices and setting accessible names where it was missing. [541886, Microsoft.Build.Tasks.v4.0.dll, Bug]
  • Fixed progress bar alignment from Right to Left in Splash Screen and Download progress dialog for ARA & HEB languages for ClickOnce UI. Fixed RTL layout in the ClickOnce dialogs. Individual controls are to be set in RTL layout as this property is not propagated. Set this property explicitly on progress bar control.[552893, Microsoft.Build.Tasks.v4.0.dll, Bug]
  • CLR:
  • Fixed LoadFrom(String, Byte[], AssemblyHashAlgorithm) works with SHA2 algorithms. [229901, mscorlib.dll, Bug]
  • Reduced AsyncLocal memory overhead on value change. [470761, mscorlib.dll, Bug]
  • Improved spin-waits in several synchronization primitives to perform better on Intel Skylake and more recent microarchitectures. [495945, mscorlib.dll, Bug]
  • Fixed issues where incorrect values are sent to EventListeners. This includes incorrect activity ids on start and stop events and improper EventLevel values. [581072, mscorlib.dll, Bug]
  • Fixed a potential crash with concurrent calls to a new dynamic method. [581154, mscorlib.dll, Bug]
  • Fixed a possible deadlock when calling Dispose() on an EventSource. [597221, System.Core.dll, Bug]
  • Networking:
  • Fixed a memory leak issue in HttpWebRequest when communicating with a HTTPS server through a proxy. [484621, System.dll, Bug]
  • Fixed HTTP Status line parsing to be more tolerant of missing status description text in HTTP responses. [534936, System.dll, Bug]
  • Fixed a NetworkInformation.NetworkChange deadlock scenario when there is a lock around NetworkChanged listener and user’s callback. [554780, System.Net.NetworkInformation.dll, System.dll, netstandard.dll, Bug]
  • SQL:
  • Fixed the issue that SqlDataReader.ReadAsync() runs synchronously. Now the method runs asynchronously as expected. [594433, System.Data.dll, Bug]
  • Fixed the issue while using SqlConnection.ConnectionString to set a null or empty connection string, an NRE exception will be thrown by the usage of the API in .Net Framework 4.7.2. [613944, System.Data.dll, Bug]
  • WCF
  • Fixed an accessibility problem in WCF Trace Viewer that caused ComboBox controls to be themed incorrectly in High Contrast themes. [424922, SvcTraceViewer.exe, Bug]
  • Fixed the race-condition that exists in AsyncResult that closes a WaitHandle before Set() is called. When this happens, the process crashes with an ObjectDisposedException. [552736, System.ServiceModel.Internals.dll, Bug]
  • Fixed race-condition when aborting connections which caused ObjectDisposedException to be thrown in CleanupChannelCollections. [586151, mscorlib.dll, Bug]
  • Windows Forms:
  • Enabled labels are now always rendered using a high contrast text color when a high contrast mode is enabled. This change is effective in applications that are recompiled to target .NET Framework 4.8 [486578, System.Windows.Forms.dll, Bug]
  • Maximize/Minimize button of new child Form are not scaled well on HDPI devices because of image property set to not to scale. On 100% dpi machines scaling it not required but on high dpi devices, when scaling set to more than 100%, the images set for Maximize/Minimize boxes need to be scaled. [515092, System.Windows.Forms.dll, Bug]
  • Checkbox height is changed from square to rectangle when scaled. Padding and margins were scaled, thus adding to already scaled height of the checkbox as we were using item height to draw checkbox instead of checkbox height. Earlier these margins/paddings were constants and ignorable pixel sizes, and were not visible. [528418, System.Windows.Forms.dll, Bug]
  • The new UIA behavior for CheckedListBox control has been introduced: the first checkbox item in the CheckedListBox control is now announced by Narrator when focus moves to the control without any selected item. This change is effective in applications that were recompiled to target .NET Framework 4.8. [533226, System.Windows.Forms.dll, Bug]
  • The new behavior for disabled link labels has been introduced: link labels' enable/disable state is now provided correctly - disabled links have IsEnabled = false Accessibility Property and read by Narrator as 'Some Link, disabled'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [537224, System.Windows.Forms.dll, Bug]
  • The new behavior for link label with defined link area has been introduced: link area accessible name is now read by Narrator as full text of the parent link label. This change is effective in applications that were recompiled to target .NET Framework 4.8. [537934, System.Windows.Forms.dll, Bug]
  • Improved accessibility for the DateTimePicker control. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file. [543580, System.Windows.Forms.dll, Bug]
  • An associated label name is now used as an accessible name for DateTimePicker control when AccessibleName property is not set. The default DateTimePicker's AccessibleRole is ComboBox now. These changes are effective in applications that were recompiled to target .Net Framework 4.8. [544791, System.Windows.Forms.dll, Bug]
  • Fixed issues to add support for UIA live regions to WinForms. Added support for notifications about the Text property changes to the Label class (through UIA Live Regions). [545374, System.Windows.Forms.dll, Bug]
  • Application Files' and 'Application Directory' label text is truncated on localized OSes. Developers will not be able to see the shortcut information for this control on the UI. This fix helps to resolve that issue and always show the full text of the label . [549024, System.Windows.Forms.dll, Bug]
  • The new UIA behavior for numeric and domain up-down controls has been introduced: numeric and domain up-down controls without labels (custom UIA name) are announced by Narrator as 'spinners'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549543, System.Windows.Forms.dll, Bug]
  • The new UIA behavior for CheckedListBox control has been introduced: an empty CheckedListBox control now has a focus rectangle drawn for a virtual first item when the control becomes focused. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549558, System.Windows.Forms.dll, Bug]
  • Improved ListView accessibility by enabling showing grey rectangle around the selected ListView item when parent ListView is out if focus. This change is effective in applications that were recompiled to target .NET Framework 4.8. [564762, System.Windows.Forms.dll, Bug]
  • Fixed VisualStyle property in Winforms, is checking for supported values (by Winforms) and any value that goes outside of this range, Winforms throws an exception. Winforms also checks if the VisualStyle property set is supported by Winforms when it is using this property and does no-op if it is not supported. Underlying native method we use to set visual styles does not care what the value for visualstyle is being passed to it. Making this change will align Winforms code with windows and does not throw exception but still validate supported visual styles when using this property. Removing the validation condition while setting this property. [578093, System.Windows.Forms.dll, Bug]
  • Fixed the DataGridView's Combobox expand/collapse state accessible for the customers who use assistive technologies. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • Fixed and improved the stability of Live Regions feature by adding LiveSetting property setter check. This feature is available starting with Windows 10, version 1709 (RS3). In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • Fixed Winforms application and controls, when enable for ""per-Monitor"" Dpi aware, they are not scaled according to the dpi of the monitor ( or device). Winforms app by default behave like ""System"" Dpi aware. This is causing Winforms applications/controls to be displayed ""blur"" as a result of windows scaling them and in some cases, controls are either not scaled or scaled out of proportionate. Made changes on control level to respond to DPI change event (assuming windows raise this event whenever there is a DPI change) and rescale controls according to the new DPI. [597091, System.Windows.Forms.dll, Bug]
  • Fixed by adding support for UIA notification event to Label and GroupBox classes. This feature is available starting with Windows 10, version 1709 (RS3). In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • Fixed by adding support for the live region feature to the ToolStripStatusLabel class. In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • Fixed by improving the accessibility of DataGridView and ListView to make sort direction available via UIA: added exposing sort order and sort column via ItemStatus property and column name. This change is effective in applications that were recompiled to target .NET Framework 4.8. [549288, System.Windows.Forms.dll, Bug]
  • Fixed by making the forward and backward toolstrip navigation consistent. This feature is available starting with Windows 10, version 1709 (RS3). In order for the application to benefit from these changes, the application should be recompiled to target .NET Framework 4.8 or the application should explicitly opt-in into all accessibility app context switches in the app.config file.
  • Fixed the announcement of DataGridView Read-only TextBox cells by making accessible and clear: editable TextBoxes are announced as 'editable' and read-only TextBoxes are announced as 'read-only'. This change is effective in applications that were recompiled to target .NET Framework 4.8. [599936, System.Windows.Forms.dll, Bug]
  • WPF:
  • Fixed a memory leak arising when removing data items from their parent collections, when UIAutomation is present. [172291, PresentationFramework.dll, Bug]
  • Fixed virtualizing ItemsControl hung during scrolling when Items collection contains duplicate value-typed objects. [360053, PresentationFramework.dll, Bug]
  • Fixed WPF application can crash with NullReferenceException when changing a property used by a DataTrigger whose host element has been removed from the visual tree. The crash only occurs if the host element is garbage-collected during a small window of time during the property-change notification. [401484, PresentationFramework.dll, Bug]
  • Fixed WPF app that has multiple top-level windows in different threads that crashes during a theme change. [404464, PresentationFramework.dll, Bug]
  • Fixed WPF applications running on touch or stylus-enabled machines can sometimes hang at startup or during connection of a tablet or stylus device. [474688, PresentationFramework.dll, Bug]
  • Fixed focus issues in WPF applications running in high contrast themes, it can be difficult to distinguish when a TextBox, PasswordBox, or RichTextBox has focus. [486957, PresentationFramework.dll, Bug]
  • Fixed WPF applications using DocumentViewer controls may see issues with the rendering of text selection graphics after a theme change. This change addresses that issue. [494408, PresentationFramework.dll, Bug]
  • In WPF applications running on touch or stylus-enabled machines that set the AppContext switch "Switch.System.Windows.Input.Stylus.EnablePointerSupport" to true, StylusPlugins would not be properly unhooked when element properties were changed prior to the presentation source being set to null. This change fixes this issue. [500125, PresentationFramework.dll, Bug]
  • Fixed an issue that caused XAML Browser Applications (XBAP’s) targeting .NET 3.5 to sometimes load using .NET 4.x runtime incorrectly. [560029, PresentationHost_v0400.dll, Bug]
  • Fixed an infinite loop arising during layout of a Grid in some cases when *-columns with MinSize constraints consume all the available space. [560609, PresentationFramework.dll, Bug]
  • Fixed WPF applications running under high contrast themes, the border color of a disabled TextBox, RichTextBox, and PasswordBox was incorrect. This change addresses that issue. [527669, PresentationFramework.dll, Bug]
  • Fixed WPF applications using non-adorner based text selection for TextBox and PasswordBox (Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false), developers may now set the SelectionTextBrush property in order to alter the rendering of the selected text. By default, this color changes with SystemColors.HighlightTextBrushKey. If non-adorner based text selection is not enabled, this property does nothing. [531137, PresentationFramework.dll, Bug]
  • Fixed WPF application running in high contrast mode has difficult to see selection visuals on DataGridCells. This change addresses that issue. [545871, PresentationFramework.dll, Bug]
  • Fixed WPF applications running on a touch or stylus-enabled machine, users might periodically see a crash in System.Windows.Window.GetWindowMinMax. This change addresses that issue. [546769, PresentationFramework.dll, Bug]
  • Fixed a memory leak arising when sending bitmaps to the clipboard. [589759, PresentationCore.dll, Bug]
  • Fixed WPF application running on a stylus or touch-enabled machine may see NullReferenceExceptions or InvalidCastExceptions under certain circumstances. This change addresses this issue. [577690, PresentationCore.dll, Bug]
  • Fixed issue when non-Adorner-based text selection is enabled in .NET Framework 4.7.2 and above, the default SelectionOpacity of FlowDocumentReader, FlowDocumentScrollViewer, and SinglePageViewer will cause the selection to obscure the underlying text. This change addresses this issue by setting the default SelectionOpacity to the correct value. [568305, PresentationFramework.dll, Bug]
  • Fixed WPF applications using non-adorner based text selection (AppContext flag "Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false"), editable ComboBoxes do not appropriately follow theme colors for text selection. [572332, PresentationFramework.dll, Bug]
  • Fixed timing issues in the finalizer thread could potentially cause exceptions during AppDomain or process shutdown in certain .NET applications. This is generally seen in applications that do not correctly shut down Dispatchers running on worker threads prior to process or AppDomain shutdown. Such applications should take care to properly manage the lifetime of Dispatchers. This change adds an AppContext switch that can help alleviate (but not eliminate) some of the issues that may arise from these application design issues. To enable this, set the AppContext flag "Switch.MS.Internal.DoNotInvokeInWeakEventTableShutdownListener=true". [606492, WindowsBase.dll, Bug]
  • Fixed crash issues and allows the replace to proceed.When replacing multiple characters with a single character (in a different language than replaced text) using IMEPad, WPF crashes. [595046, PresentationFramework.dll, Bug]
  • Fixed WPF application that changes TreeView.IsEnabled and (at the same time) changes the underyling collection(s) can experience a spurious ElementNotAvailableException. [573999, PresentationFramework.dll, Bug]
  • WorkFlow:
  • We have modified the hashing algorithm used to generate XOML file checksums when building projects with XOML files. If this causes problems, the previous hashing algorithm can be used by specifying ""true"" for the following AppContext switch: Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum. Note that this AppContext switch applies to the MSBuild process, so must be specified in the ""config path"" of the MSBuild.Exe that is used to perform the builds. [531054, System.Workflow.Runtime.dll, Bug]
  • We have modified the hashing algorithm used to calculate keys to internal in-memory caches. If this causes problems, the previous hashing algorithm can be used by specifying ""true"" for the following AppContext switches: Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey [532505, System.Workflow.Runtime.dll, Bug]"
  • Fixed default hashing algorithm that help debugging symbols has changed. If you encounter problems with breakpoints in the workflow designer not being hit when expected, you may have a mismatch of hashing algorithms between MSBuild and the project being debugged. The following AppContext switch can be specified for MSBuild.exe and the project being debugged to help alleviate the problem. Switch.System.Activities.UseLegacyHashForDebuggerSymbols If this switch has a value of ""true"", then the default hashing algorithm for pre-4.7.2 versions of .NET are used. If the value of the switch is ""false"", the newer default hashing algorithm is used. [537692, System.Workflow.Runtime.dll, Bug]
  • Previously, under extreme usage conditions (high volume of connections to MSDTC), it was possible for a CriticalSection to be held by a single thread indefinitely, resulting in the need to restart the process. This problem has been resolved. In addition, some object caches that would help performance in multi-threaded scenarios were not taken advantage of correctly. This has been resolved. [540812, System.Workflow.Runtime.dll, Bug]

New in Microsoft .NET Framework 4.7.2 (May 1, 2018)

  • CORE:
  • The .NET Framework 4.7.2 features a large number of cryptographic enhancements, better decompression support for ZIP archives, and additional collection APIs.
  • New overloads of RSA.Create and DSA.Create:
  • The DSA.Create(DSAParameters) and RSA.Create(RSAParameters) methods let you supply key parameters when instantiated a new DSA or RSA key.
  • Rfc2898DeriveBytes constructors accept a hash algorithm name:
  • The Rfc2898DeriveBytes class has three new constructors with a HashAlgorithmName parameter that identifies the HMAC algorithm to use when deriving keys. Instead of using SHA-1, developers should use a SHA-2-based HMAC like SHA-256
  • Support for ephemeral keys:
  • PFX import can optionally load private keys directly from memory, bypassing the hard drive. When the new X509KeyStorageFlags.EphemeralKeySet flag is specified in an X509Certificate2 constructor or one of the overloads of the X509Certificate2.Import method, the private keys will be loaded as ephemeral keys. This prevents the keys from being visible on the disk. However:
  • Since the keys are not persisted to disk, certificates loaded with this flag are not good candidates to add to an X509Store.
  • Keys loaded in this manner are almost always loaded via Windows CNG. Therefore, callers must access the private key by calling extension methods, such as cert.GetRSAPrivateKey(). The X509Certificate2.PrivateKey property does not function.
  • Since the legacy X509Certificate2.PrivateKey property does not work with certificates, developers should perform rigorous testing before switching to ephemeral keys.
  • Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates:
  • Starting with the .NET Framework 4.7.2, workloads can generate certificate signing requests (CSRs), which allows certificate request generation to be staged into existing tooling. This is frequently useful in test scenarios
  • New SignerInfo members:
  • Starting with the .NET Framework 4.7.2, the SignerInfo class exposes more information about the signature. You can retrieve the value of the System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm property to determine the signature algorithm used by the signer. SignerInfo.GetSignature can be called to get a copy of the cryptographic signature for this signer
  • Leaving a wrapped stream open after CryptoStream is disposed
  • Starting with the .NET Framework 4.7.2, the CryptoStream class has an additional constructor that allows Dispose to not close the wrapped stream
  • Decompression changes in DeflateStream:
  • Starting with the .NET Framework 4.7.2, the implementation of decompression operations in the DeflateStream class has changed to use native Windows APIs by default. Typically, this results in a substantial performance improvement.
  • Support for decompression by using Windows APIs is enabled by default for applications that target .NET Framework 4.7.2. Applications that target earlier versions of .NET Framework but are running under .NET Framework 4.7.2 can opt into this behavior by adding the following AppContext switch to the application configuration file: <AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />
  • Additional collection APIs:
  • The .NET Framework 4.7.2 adds a number of new APIs to the SortedSet<T> and HashSet<T> types
  • ASP.NET:
  • Support for dependency injection in Web Forms:
  • Dependency injection (DI) decouples objects and their dependencies so that an object's code no longer needs to be changed just because a dependency has changed. When developing ASP.NET applications that target the .NET Framework 4.7.2, you can:
  • Use setter-based, interface-based, and constructor-based injection in handlers and modules, Page instances, and user controls of ASP.NET web application projects.
  • Use setter-based and interface-based injection in handlers and modules, Page instances, and user controls of ASP.NET web site projects.
  • Plug in different dependency injection frameworks.
  • Support for same-site cookies:
  • SameSite prevents a browser from sending a cookie along with a cross-site request. The .NET Framework 4.7.2 adds a HttpCookie.SameSite property whose value is a System.Web.SameSiteMode enumeration member. If its value is SameSiteMode.Strict or SameSiteMode.Lax, ASP.NET adds the SameSite attribute to the set-cookie header. SameSite support applies to HttpCookie objects, as well as to FormsAuthentication and System.Web.SessionState cookies.
  • NETWORKING:
  • Implementation of HttpClientHandler properties:
  • The .NET Framework 4.7.1 added eight properties to the System.Net.Http.HttpClientHandler class. However, two threw a PlatformNotSupportedException. The .NET Framework 4.7.2 now provides an implementation for these properties. The properties are:
  • CheckCertificateRevocationList
  • SslProtocols
  • SQLCLIENT:
  • Support for Azure Active Directory Universal Authentication and Multi-Factor authentication
  • Growing compliance and security demands require that many customers use multi-factor authentication (MFA). In addition, current best practices discourage including user passwords directly in connection strings. To support these changes, the .NET Framework 4.7.2 extends SQLClient connection strings by adding a new value, "Active Directory Interactive", for the existing "Authentication" keyword to support MFA and Azure AD Authentication. The new interactive method supports native and federated Azure AD users as well as Azure AD guest users. When this method is used, the MFA authentication imposed by Azure AD is supported for SQL databases. In addition, the authentication process requests a user password to adhere to security best practices.
  • In previous versions of the .NET Framework, SQL connectivity supported only the SqlAuthenticationMethod.ActiveDirectoryPassword and SqlAuthenticationMethod.ActiveDirectoryIntegrated options. Both of these are part of the non-interactive ADAL protocol, which does not support MFA. With the new SqlAuthenticationMethod.ActiveDirectoryInteractive option, SQL connectivity supports MFA as well as existing authentication methods (password and integrated authentication), which allows users to enter user passwords interactively without persisting passwords in the connection string.
  • Support for Always Encrypted version 2
  • NET Framework 4.7.2 adds supports for enclave-based Always Encrypted. The original version of Always Encrypted is a client-side encryption technology in which encryption keys never leave the client. In enclave-based Always Encrypted, the client can optionally send the encryption keys to a secure enclave, which is a secure computational entity that can be considered part of SQL Server but that SQL Server code cannot tamper with. To support enclave-based Always Encrypted, the .NET Framework 4.7.2 adds the following types and members to the System.Data.SqlClient namespace:
  • SqlConnectionStringBuilder.EnclaveAttestationUrl, which specifies the Uri for enclave-based Always Encrypted.
  • SqlColumnEncryptionEnclaveProvider, which is an abstract class from which all enclave providers are derived.
  • SqlEnclaveSession, which encapsulates the state for a given enclave session.
  • SqlEnclaveAttestationParameters, which provides the attestation parameters used by SQL Server to get information required to execute a particular Attestation Protocol.
  • WINDOWS PRESENTATION FOUNDATION:
  • Finding ResourceDictionaries by Source:
  • Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the ResourceDictionaries that have been created from a given source Uri. (This feature is for use by diagnostic assistants, not by production applications.) A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility lets its user edit a ResourceDictionary with the intent that the changes be applied to the running application. One step in achieving this is finding all the ResourceDictionaries that the running application has created from the dictionary that’s being edited. For example, an application can declare a ResourceDictionary whose content is copied from a given source URI: <ResourceDictionary Source="MyRD.xaml">
  • A diagnostic assistant that edits the original markup in MyRD.xaml can use the new feature to locate the dictionary. The feature is implemented by a new static method, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. The diagnostic assistant calls the new method using an absolute Uri that identifies the original markup, as illustrated by the following code: IEnumerable<ResourceDictionary> dictionaries = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(new Uri("pack://application:,,,/MyApp;component/MyRD.xaml"));
  • Finding ResourceDictionary owners:
  • Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the owners of a given ResourceDictionary. (The feature is for use by diagnostic assistants and not by production applications.) Whenever a change is made to a ResourceDictionary, WPF automatically finds all DynamicResource references that might be affected by the change.
  • A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want extend this to handle StaticResource references. The first step in this process is to find the owners of the dictionary; that is, to find all the objects whose Resources property refers to the dictionary (either directly, or indirectly via the ResourceDictionary.MergedDictionaries property). Three new static methods implemented on the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class, one for each of the base types that has a Resources property
  • Finding StaticResource references:
  • A diagnostic assistant can now receive a notification whenever a StaticResource reference is resolved. (The feature is for use by diagnostic assistants, not by production applications.) A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want to update all uses of a resource when its value in a ResourceDictionary changes. WPF does this automatically for DynamicResource references, but it intentionally does not do so for StaticResource references. Starting with the .NET Framework 4.7.2, the diagnostic assistant can use these notifications to locate those uses of the static resource.
  • CLICKONCE:
  • HDPI-aware applications for Windows Forms, Windows Presentation Foundation (WPF), and Visual Studio Tools for Office (VSTO) can all be deployed by using ClickOnce. If the following entry is found in the application manifest, deployment will succeed under .NET Framework 4.7.2: <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware></windowsSettings>
  • For Windows Forms application, the previous workaround of setting DPI awareness in the application configuration file rather than the application manifest is no longer necessary for ClickOnce deployment to succeed.

New in Microsoft .NET Framework 4.7.2 Early Access Build 3052 (Feb 5, 2018)

  • ASPNET:
  • Support for Dependency Injection in Page, Custom Handler and User controls. [364308, system.web.dll, Feature]
  • Enable ASP.NET developers to specify MaxLength attribute for Multiline asp:TextBox. [449020, System.Web.dll, Bug]
  • Avoid InvalidCastException when running an ASP.NET application that works with mixed HttpWorkerRequests types and has FREB/ETW tracing enabled. [472566, system.web.dll, Bug]
  • Fixed issue https://github.com/Microsoft/dotnet-framework-early-access/issues/2 [479409, 521834, system.web.dll, Bug]
  • With this improvement, users who created apps on .NET Framework 4.7.2+ or upgraded apps to .NET Framework 4.7.2+, if they don't specify the appsetting value in their configurations, they won't be using regexes in data type attributes (such as EmailAddressAttribute, UrlAttribute, and PhoneAttribute). They will instead use a simpler implementation. [480141, system.web.dll, Bug]
  • Support for SameSite property in HttpCookie. [497045, system.web.dll, Feature]
  • Fixed bug in ASP.NET LowPhysicalMemoryMonitor where the monitor might fail to start if memory use falls within a certain range. [531575, system.web.dll, Bug]
  • Fixed bug in ASP.NET LowPhysicalMemoryMonitor where the default polling interval is sometimes mistakenly disabled. [531576, system.web.dll, Bug]
  • Fixed the behavior of ASP.NET's RecycleLimitMonitor in cases where no private bytes recycling limit is explicitly set in IIS configuration. [531579, system.web.dll, Bug]
  • BCL:
  • Increased throughput of decompression zip archives by ~3x. [199232, mscorlib.dll, Feature]
  • Reduction in HashSet memory consumption via StructLayout. [212195, mscorlib.dll, Bug]
  • Added ConcurrentDictionary GetOrAdd/AddOrUpdate overloads with generic argument. [212212, 212820, 515491, mscorlib.dll, Feature]
  • Improvement in performance of ConcurrentDictionary. [212582, mscorlib.dll, Bug]
  • Performance improvements for HashSet construction from another HashSet. [212624, mscorlib.dll, Bug]
  • Added HashSet ctors with capacity. [212788, mscorlib.dll, Feature]
  • Support for additional DSA factory methods to make key creation easier. [221261, mscorlib.dll, Feature]
  • Support for additional RSA factory methods to make key creation easier. [223399, mscorlib.dll, Feature]
  • Improved reliability when working with large expression trees. [256966, system.core.dll, Bug]
  • Support for loading certificate PFX files without writing the private key to the hard drive. [258543, mscorlib.dll, Feature]
  • Added a leaveOpen constructor on CryptoStream to mitigate problems with disposing the CryptoStream that ends up disposing the underlying stream which is not desirable in certain scenarios. [272215, mscorlib.dll, Bug]
  • Support for SHA-2 hash algorithms in Rfc2898DeriveBytes. [272906, mscorlib.dll, Feature]
  • Implement Enumerable.ToHashSet. [291752, system.core.dll, Feature]
  • Added TryGetValue method to HashSet. [381763, system.core.dll, Feature]
  • Fixed a problem where using OnDeserilalizingAttribute/OnDeserializedAttribute/OnSerializingAttribute/OnSerializedAttribute in a type in an assembly targeting NetStandard 2.0 would throw a TypeLoadException when accessing the type. [407239, mscorlib.dll, Bug]
  • Support for programmatically creating X.509 certificates and certificate signing requests. [428598, mscorlib.dll, Feature]
  • Fixed a problem where EventSource logging to ETW can fail in 32-bit large address aware processes. [443469, system.dll, Bug]
  • Fixed security vulnerability tracked by Microsoft Common Vulnerabilities and Exposures CVE-2018-0764. [455812, 507252, system.xml.dll, Bug]
  • Fixed a problem in returning Byte-Order-Mark with UTF8 objects when the default codepage on Windows is set to UTF8 codepage (65001) in Encoding.Default. Applications run into problems in this scenario and the Byte-Order-Mark is no longer sent with the UTF8 objects. [460626, mscorlib.dll, Bug]
  • ReaderWriterLockSlim now scales better under contention. See https://github.com/dotnet/coreclr/pull/13495 and https://github.com/dotnet/coreclr/pull/13243 for more details. [468648, mscorlib.dll, Bug]
  • File and directory enumeration performance is now improved. Enumerating will be faster and allocate significantly less than before. [470762, mscorlib.dll, Bug]
  • Increment the assembly version of System.Net.Http and System.IO.Compression to be compatible with netstandard 2.0 and the compatibility package. [504519, mscorlib.dll, Feature]
  • Fixed problem where in certain scenarios corrupted zip is produced. [504526, mscorlib.dll, Bug]
  • Avoid allocations in DateTime.Now [504528, mscorlib.dll, Bug]
  • Make Lazy initialization of TextInfo.IsAsciiCasingSameAsInvariant thread safe. [504530, mscorlib.dll, Bug]
  • Use beforefieldinit field for Comparer/EqualityComparer.Default. [504531, mscorlib.dll, Bug]
  • Avoid duplicated computations with DateTime.GetDatePart. [504571, mscorlib.dll, Bug]
  • Peformance of Buffer.MemoryCopy was significantly improved for smaller buffers. [504573, mscorlib.dll, Bug]
  • Improve string.Equals OrdinalIgnoreCase performance for matching chars. [504580, mscorlib.dll, Bug]
  • Avoid duplicated computations with DateTime.GetDatePart. [504591, 504571, BCL, Bug]
  • Make GetProcessInfo() for a single PID cheaper on Windows. [505023, mscorlib.dll, Bug]
  • Support for netstandard runtime facade type forward to contracts when possible, to enable usage of OOB types that were moved inbox on a .NET Framework 4.6.1 app that tries to run on .NET Framework 4.7.1+. [510901, mscorlib.dll, Bug]
  • Support for compatibility with the support package, so that running netstandard apps on .NET Framework 4.7.1 is possible. [514195, mscorlib.dll, Bug]
  • Support for ephemeral asymmetric keys to be consistently exportable. [516638, mscorlib.dll, Bug]
  • Exposed the signature algorithm identifier and the signature value on CMS SignerInfo. [517223, mscorlib.dll, Feature]
  • Performance improvement of ManualResetEventSlim under contention. [517311, mscorlib.dll, Bug]
  • Fixed managed attributes for assemblies System.Diagnostics.Tracing.dll, System.IO.Compression.dll, and System.Net.Http.dll. [522034, System.dll, Bug]
  • Enable CodeDOM to generate trusted code when Device Guard by maintaining integrity of inputs and outputs. [526489, mscorlib.dll, Feature]
  • Fixed problem with RuntimeInformation static class to now return the right value for architecture. [534300, mscorlib.dll, Bug]
  • CLR:
  • Reliably handle scenarios where framework assemblies are present in DEVPATH. [207947, clr.dll, Bug]
  • The GC will now compact the heap more aggressively when running out of virtual address space in 32-bit processes, even if there is a great deal of physical memory available on the machine. [377888, clr.dll, Bug]
  • Fixed hang when loading NI images whose IL assemblies are not in the GAC, where the NI images have circular dependencies and COMPlus_NgenBind_OptimizeNonGac is enabled. [452001, clr.dll, Bug]
  • Fixed a silent bad codegen bug. [467692, clrjit.dll, Bug]
  • Improved reliability in a scenario with certain mixtures of LOH heap expansion and background GC operation. [470006, clr.dll, Bug]
  • This fixes a bad error message with truncated type names when running TlbExp.exe with /verbose, or using ITypeLibExporterNotifySink.ReportEvent API. [480497, Tlbexp.exe, Bug]
  • Fixed a problem where the GC can crash when recovering from an out-of-memory exception when performing a GC. [487315, clr.dll, Bug]
  • Fixed problem where certain multithreaded programs can experience extremely intermittent crashes, normally during program startup. [490377, clr.dll, Bug]
  • Fixed unpredictable crashes that can occur when trying to read custom attributes from assemblies carrying an invalid metadata pattern emitted by certain pre-v2 compilers. [497461, clr.dll, Bug]
  • Fixed hang when loading NI images whose IL assemblies are not in the GAC, where the NI images have circular dependencies and COMPlus_NgenBind_OptimizeNonGac is enabled. [509957, clr.dll, Bug]
  • Fixed a potential deadlock in ReadyToRun scenarios in cases where exception handling and code heap modification occur simultaneously. [510081, clrjit.dll, Bug]
  • Fixed a floating-point overflow in the thread pool’s hill climbing algorithm. [511559, clr.dll, Bug]
  • Hardens .NET library loading security if an administrator opts into the new Device Guard Dynamic Code Security policy. [517453, clr.dll, Bug]
  • Fixed a problem where a SetConsoleCtrlHandler function is not executed during debugging when Visual Studio is set to not handle Ctrl+C events. [518982, system.dll, Bug]
  • This change adds a dynamic method unload event that is fired whenever a dynamic method is destroyed. This is needed because profilers can listen to dynamic method load events (via DynamicMethodJittingStarted/Finished) but previously would never be notified of destroyed dynamic methods. This can happen for example when the dynamic method is garbage collected. [523635, CorGuids.lib, Feature]
  • Improved reliability of jump stub allocation. Corresponding .NET Core change: https://github.com/dotnet/coreclr/pull/15296 [537668, clr.dll, Bug]
  • ClickOnce:
  • Fixed validation of SHA2 certificates for ClickOnce applications to allow avoiding SmartScreen for trusted publishers. This also allows customers to block installation of unsigned ClickOnce applications. [395008, system.deployment.dll, Bug]
  • With this improvement, WPF developers can set a non-default DPI Awareness mode in their application manifest to take advantage of recent OS improvements in HDPI while still able to deploy via ClickOnce. [480091, Dfshim.dll, Feature]
  • Support for timestamping ClickOnce manifest using RFC3161 timestamp servers. [480646, mage.exe, Feature]
  • The value of the progress bar in the ClickOnce installation progress window is now read correctly by the Narrator. The decorative dividers of the ClickOnce installation progress window are no longer read by the Narrator. [526717, dfsvc.exe, Bug]
  • ClickOnce app install and app launch windows are now accessible for the Narrator users [523737, dfsvc.exe, Bug]
  • Networking:
  • Improved reliability by correctly processing Unicode characters in file URIs that point to UNC shares. [95292, System.dll, Bug]
  • Fixed a reliability problem with how IPV6 Addresses are converted to strings after their scope ID has been modified. [95508, System.dll, Bug]
  • Improved reliability in the scenario where HttpClientHandler.SendAsync functions as expected even when started in a task with a custom TaskScheduler. [110673, System.dll, Bug]
  • Fixed HttpClient so that OperationCanceledException/TaskCanceledException's being returned from canceled requests will now have the proper settings on the Exception.CancellationToken property. [111275, System.dll, Bug]
  • Fixed argument validation of System.Net.Mime.HeaderCollection Set/Add methods, and correct parameter name in exception message. [116743, System.dll, Bug]
  • Fixed Socket ReceiveAsync to use the specified output buffers when receiving data extremely quickly over TCP and using several different sized buffers. [119549, System.dll, Bug]
  • Fixed a problem in System.Uri where Unicode bidirectional control characters would be stripped from a Uri during parsing. This behavior change can be disabled by setting the new App Context Switch Switch.System.Uri.DontKeepUnicodeBidiFormattingCharacters. [130850, System.dll, Bug]
  • Fixed parsing of ‘Set-Cookie’ headers received with Http APIs (HttpWebRequest, WebClient, HttpClient) for CookieContainer so that all valid cookies are correctly stored in the CookieContainer. [143892, System.dll, Bug]
  • Fixed a problem with System.Uri to ensure that URI reserved character decoding behavior strictly conforms to the RFC 3986 specification. This means that the percent encoded versions of " : ", " ' ", " ( ", " ) ", " ! " and " * " will no longer be incorrectly decoded when generating the absolute URI. [150266, System.dll, Bug]
  • Use a global lock to protect AddressChangeListener and AvailabilityChangeListener states from race conditions. [162830, System.dll, Bug]
  • Socket.BeginConnect will now consistently throw InvalidOperationException when attempting multiple operations. [188428, System.dll, Bug]
  • Improved reliability by ensuring that URIs with unknown schemes and no host are normalized correctly and the URI path is processed correctly. [233623, System.dll, Bug]
  • Fixed the System.Net.Http.Headers.ContentDispositionHeaderValue class so that setting the Size property no longer throws a NullReferenceException. [251481, System.dll, Bug]
  • Fixed a problem by preventing System.Uri.TryCreate from throwing a NullReferenceException when creating a relative URI that contains Unicode characters. [287019, System.dll, Bug]
  • Fixed a reliability issue with HttpWebRequest so that closed connections can be correctly removed from the connection pool and additional requests sent correctly. [371763, System.dll, Bug]
  • Added implementation to HttpClientHandler so that the newly added properties in .NET Framework 4.7.1 will no longer throw PlatformNotSupportedException. [386926, System.dll, Feature]
  • Fixed ServicePoint.CloseConnectionGroup() so that it properly closes all connections associated with the connection group name passed in the method parameter. [404684, System.dll, Bug]
  • Fixed the System.Net.WebHeaderCollection.GetValues() method to properly return cookies that have an 'Expires' attribute. [467951, System.dll, Bug]
  • Fixed System.Net HTTP APIs (WebClient, HttpWebRequest, HttpClient) so that connections to the proxy to set up the CONNECT tunnel (for TLS/SSL requests) will now have the 'User-Agent' header passed to the request if that header was added by the developer to the original http request. [486995, System.dll, Bug]
  • Fixed a reliability issue with HttpWebRequest and HttpClient where socket connection errors would prevent Http requests from being retried automatically. [493616, System.dll, Bug]
  • Fixed SmtpClient so that it can properly send mail to SMTP servers that use the Kerberos protocol via GSSAPI for authentication. [495813, System.dll, Bug]
  • Eliminate a deadlock situation when closing WebSocket connections. [497690, System.dll, Bug]
  • Fixed a problem with AppContext switch Switch.System.Net.DontEnableSchSendAuxRecord where it failed to properly allow for the switch to be enabled. [511005, System.dll, Bug]
  • Fixed a problem with connection limit when using HttpClient to send requests to loopback addresses. More info: https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/534719-Networking%20ServicePoint.ConnectionLimit%20default%20behavior%20with%20loopback%20changed%20unexpectedly.md. [534719, System.dll, Bug]
  • SQL:
  • While receiving XEvents using SqlClient, the last XEvent was not retrieved unless the server pushed more data down to the client. This bug is fixed. All XEvents will not be instantly available. [104572, System.Data.dll, Bug]
  • Fixed the DataSet memory leak issue in System.data.dll. Datatable constraint’s Dataset field will be equal to Datatable’s Dataset field once Datatable’s DataSet is modified. [404667, System.Data.dll, Bug]
  • SQL Azure can now support failover-partner when connecting to GeoDr database using readonly application intent, failover partner is one secondary DB replica specified by SQLAzure during the login time. [479724, System.Data.dll, Feature]
  • Added support for Always Encrypted leveraging enclave technologies. [481138, 524384, System.Data.dll, Feature]
  • With this fix, SqlBulkCopy can be performed without the issue caused when SqlDecimal 0 is inserted to a table column which type has the same precision size as its scales size. It prevents the SqlBulkCopy error caused when a SqlDecimal value having larger precision than its minimum precision is inserted to a table column, which the SqlDecimal value can be adjusted to fit the column type. [481988, System.Data.dll, Bug]
  • Added a new value for the SQL connection string keyword. [484823, System.Data.dll, Feature]
  • This prevents potential Connection Pool fragmentation and increases the performance of connection opening. [489852, System.Data.dll, Bug]
  • This prevents connection hang that happens when users try to connect to mirrored SQL Server with timeout set to 0. [498136, System.Data.dll, Bug]
  • This change adds a try-finally wrapper around AbortTransaction() calls in SqlBulkCopy. WriteRowSourceToServerAsync(). The finally block ensures a lock is properly released in case AbortTransaction throws an exception due to a closed underlying connection. Not releasing the lock can lead to hangs later on in SqlConnection.Dispose() and Close(). [499706, System.Data.dll, Bug]
  • Fixed failure to get return value from stored procedure in SQL Server when the return value type is VARCHAR(8000) and output string has length longer than 3,999. [504075, System.Data.dll, Bug]
  • Fixed error connecting to read only secondary via routing table when connecting using the AOAG listener and specifying Column Encryption Setting=Enabled and ApplicaationIntent=Readonly. [510851, System.Data.dll, Bug]
  • Integrating Azure AD Universal and Multi-factor authentication (MFA) support with SQL .NET driver. [521874, System.Data.dll, Feature]
  • Signature verification results are now cached improving query execution times for enclave-based queries. [552762, System.Data.dll, Feature]
  • WCF:
  • Fixed service response problems owing to deadlock in SharedTcpTransportManager.OnClose and OnReceiveComplete. [455781, System.ServiceModel.dll, Bug]
  • Improved performance in a scenario where an application is using BinaryFormater to serialize/deserialize large number of objects. This fix needs to be opted-into by configuration setting. [443438, 497686, System.Runtime.Serialization.dll, Bug]
  • Improved accessibility for the WCF Service Trace Viewer by updating the focus order of UI components to be more logical [465130, SvcTraceViewer.exe, Bug]
  • Improved accessibility for the WCF Service Trace Viewer and the WCF Service Configuration Editor to follow high contrast standards.[505605, SvcConfigEditor.exe, SvcTraceViewer.exe, Bug]
  • A race-condition exists in the Abort code-path of SyncDuplexRequest. When the race-condition occurs, we try to set a ManualResetEvent that has already been closed, which results in an ObjectDisposedException. This happens in one of the threadPool threads and as a result an exception is thrown. When this happens, the exception crashes the service. [513726, System.Servicemodel.dll, Bug]
  • Improved chain trust certificate validation when using certificate authentication with transport security with WCF. With this improvement client certificates that are used to authenticate to a server must be configured for Client Authentication. Similarly server certificates that are for the authenticating a server must be configured for Server Authentication. With this change if the root certificate is disabled, the certificate chain validation will fail. [516393, System.Servicemodel.dll, Bug]
  • Fixed an issue with serializing deeply linked data when using DataContractSerializer. [527549, System.Runtime.Serialization.dll, Bug]
  • Windows Forms:
  • PrivateFontCollection class now releases lock on GDI Fonts that are added to the collection as files [126279, System.Drawing.dll, Bug]
  • Fixed a NullReferenceException that would occur when DataGridView.Dispose is called on some systems. [295566, System.Windows.Forms.dll, Bug]
  • Fixed problems with DomainUpDown "up" and "down" unsymmetrical operations. [362787, System.Windows.Forms.dll, Bug]
  • The arrow of "Type name display style" dropdown button of Document outline window is now painted correctly when it is selected, and HC mode is enabled. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [386393, System.Windows.Forms.dll, Bug]
  • MageUI.exe SDK tool now has localized update units combobox items. [397545, MageUI.exe, Bug]
  • Validation warning dialog in MageUI.exe SDK tool is now localized. [397576, MageUI.exe, Bug]
  • Made Culture combobox of Mage UI App/Deployment Manifest Name dialog wider to fit all the text it's items contain [397578, System.Windows.Forms.dll, Bug]
  • Fixed a problem where the child control collection ordering of tab pages could get out of sync with the physical ordering of tabs in a tab control. [411856, System.Windows.Forms.dll, Bug]
  • The following changes are effective in applications that are either recompiled to target .NET Framework 4.7.2, or the following switches are added to the app.config file: <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false Switch.UseLegacyAccessibilityFeatures.2=false" />
  • Improved accessibility for the PropertyGrid, DataGridView, CheckBox, RadioButton and ToolStrip controls. [409783, 458754, 459106, 484522, 497774, 500509, 503194, 508364, 513314, System.Windows.Forms.dll, Bug]
  • Narrator now reads out the ToolStripMenuItem accelerator key. [404279, System.Windows.Forms.dll, Bug]
  • Fixed standard button focus dot line colors in High Contrast mode. [429823, System.Windows.Forms.dll, Bug]
  • Improved accessibility of the DataGridView control by implementing both Grid and Table UIA patterns. [435320, System.Windows.Forms.dll, Bug]
  • The DataGridView control now supports F3 command to update the sort order in the table. [435621, System.Windows.Forms.dll, Bug]
  • Improved keyboard accessibility of ToolStrips hosted in ToolStripContainers. For a Windows Forms application to get all accessibility improvements that were introduced in .NET Framework 4.7.2, the application should be recompiled to target .NET framework 4.7.2 or the application should explicitly opt-in into all accessibility app compat switches in the app.config file. [441148, 518461, System.Windows.Forms.dll, Bug]
  • Improved rendering of disabled, FlatStyle=Standard (the default) WinForms RadioButton, CheckBox and GroupBox controls in High Contrast themes. These changes will be effective only on the latest version of Windows 10 (Fall Creator's update), as the corresponding changes in the Windows code are required and in applications that target .Net Framework 4.7.2. [455890, System.Windows.Forms.dll, Bug]
  • ContextMenuStrip.SourceControl property now correctly returns the expected control source in nested ToolStripMenuItem cases. [460662, System.Windows.Forms.dll, Bug]
  • Fixed text color in pressed and selected modes for toolStripButton, toolStripSplitButton and toolStripDropDownButton in HC Modes.
  • Improved high contrast experience for DataGridView link cells. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [475501, System.Windows.Forms.dll, Bug]
  • ToolStrip.State will now return AccessibleStates.Unavailable | AccessibleStates.Focused for disabled menu items whereas before it would only return AccessibleStates.Focused. This change enables Narrator to correctly announce the disabled menu items as being disabled. [483700, System.Windows.Forms.dll, Bug]
  • Fixed arrow color in focused mode for toolStripComboBox in HC Mode. [473866, System.Windows.Forms.dll, Bug]
  • Fixed a problem introduced in .NET Framework 4.7 in a scenario when a developer uses Configure.Save() method and add an empty section that may not be read while loading project, causing failure in Project load. [461647, System.Windows.Forms.dll, Bug]
  • Updated Open, Save, Undo and Redo icons for WinRes.exe in .NET Framework SDK. [464542, WinRes.exe, Bug]
  • MageUI.exe SDK tool now has localized update units combobox items. [468602, MageUI.exe, Bug]
  • Support for PerMovitorV2 DPI awareness in Flat and PopUp ComboBox controls. [473703, System.Windows.Forms.dll, Bug]
  • MageUI manifest validation prompt header is now fully visible. [475210, MageUI.exe, Bug]
  • It is possible to switch from designer to property browser of WinRes.exe with F4 key now. It is also possible to switch back using Esc key now. [477857, System.Windows.Forms.dll, Bug]
  • Fixed incorrect "..." button text truncation for Mage UI Sign on Save dialog when CHS locale is enabled. [484526, System.Windows.Forms.dll, Bug]
  • Resized "Select Culture" dialog of WinRes to make sure that all the text it contains fits the dialog correctly. [488099, WinRes.exe, Bug]
  • Implemented Ctrl+Alt+O shortcut to access Output window of WinRes via the keyboard. [513054, System.Windows.Forms.dll, Bug]
  • Fixed the narrator focus order for the ClickOnce download progress window. [530637, System.Windows.Forms.dll, Bug]
  • Workflow:
  • In a self-hosted environment when program initialization tasks are executed in parallel and there are common assembly loads happening in each thread, a deadlock could occur. [251926, system.activities.dll, Bug]
  • Previously it was possible to encounter a stack overflow in the workflow service hosting process (W3WP.exe) when IWorkflowInstanceManagement.TransactedCancel or IWorkflowInstanceManagement.TransactedTermnate operations were performed. This can be avoided by adding an AppSetting to the Web.Config for the service: <appSettings> <add key="microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate" value="true"/> </appSettings>
  • The outcome of the transaction does not affect whether the cancel or terminate operation is performed. There is no ""undo"" of a cancel or terminate if the transaction is rolled back. [258978, System.Servicemodel.dll, Bug]
  • Improved WorkflowDesignerColors class. [479504, system.activities.dll, Feature]
  • Improved accessibility for buttons on workflow designer under HC theme. This change is effective in applications that were recompiled to target .Net Framework 4.7.2 [407093, system.activities.dll, Bug]
  • Improved accessibility for workflow activities by removing irrelevant information associated with them. This change is effective in applications that were recompiled to target .NET Framework 4.7.2. [408329, system.activities.dll, Bug]
  • Improved accessibility in Workflow designer. Specifically, there are fixes in high contrast mode, focus of different controls and dialogs and name properties. [447654, System.Activities.Presentation.dll, Bug]
  • Previously, when using TransactionScopeAsyncFlowOption.Enabled and there you had a non-null Transaction.Current and you did a remote AppDomain call and the lease lifetime expired while that remote AppDomain call was outstanding, Transaction.Current could be null upon return from that call. This is now fixed so that Transaction.Current will be the same after the remote AppDomain call as before the call. [516454, system.transactions.dll, Bug]
  • WPF:
  • Fixed a crash arising when opening a popup within an item in an ItemsControls with VirtualizationMode=Recycling. [161345, PresentationFramework.dll, Bug]
  • In Win8+ themes, a disabled Button sets foreground to gray on its ContentPresenter. This inherits to descendants of the ContentPresenter, but not to elements whose logical parent is the Button itself - like the TextBlock. So the Button and its logical child TextBlock kept the default black foreground. This fix removes the setting of foreground on ContentPresenter and sets the foreground on the button to gray, which then extends to its descendants. [204105, PresentationFramework.dll, Bug]
  • When an element joins the visual tree, a property can receive an inherited value even when a higher-priority value becomes available at the same time, via a newly-resolvable DynamicResource reference. This can arise when scrolling a list where VirtualizationMode=Recycling. [208745, PresentationFramework.dll, Bug]
  • Fixed a memory leak arising from certain bindings that involve DataSet or related classes (from System.Data.dll). [297912, PresentationFramework.dll, Bug]
  • Fixed data corruption arising when a scrolling DataGrid with VirtualizationMode=Recycling. [405066, PresentationFramework.dll, Bug]
  • In WPF applications running under certain themes, selected text in TextBox and PasswordBox may not be visible. This is due to the selection being rendered on top of the text in the Adorner layer. This feature adds an AppContext switch (Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering) that, when set to false, will cause WPF to render the selection underneath the text, allowing for good visibility in TextBox and PasswordBox. Note that this does not apply to RichTextBox. [405199, PresentationFramework.dll, Bug]
  • The following changes are effective in applications that are either recompiled to target .NET Framework 4.7.2, or the following switches are added to the app.config file: AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false"
  • Applications with multiple hosting layers between WPF and WinForms may experience incorrect focus navigation when pressing the Tab Key. This is now fixed. [445603, PresentationCore.dll, Bug]
  • Fixed a problem where the keyboard focus visual of Checkbox and RadioButton may be difficult to see in WPF applications running under classic themes or in high contrast scenarios. [447590, PresentationFramework.dll, Bug]
  • In a master/detail scenario using ADO data, changing the primary key of a master item cleared the display of the corresponding details, with no way to display them thereafter. This is fixed by default for apps targeting .NET Framework 4.7.2, and for all apps that set the app-context switch Switch.System.Windows.Data.DoNotUseFollowParentWhenBindingToADODataRelation to false. [457740, PresentationFramework.dll, Bug]
  • Users may not be able to tab out of a WPF ElementHost contained in a Winforms app when hitting SHIFT + TAB, this issue is fixed now. [458074, WindowsFormsIntegration.dll, Bug]
  • Fixed scrolling issues arising in a TreeView that uses VisualStateManager to animate visibility when expanding or collapsing nodes. [460617, PresentationFramework.dll, Bug]
  • Improved Keytip behavior to bring parity with behavior on Word and Explorer. Now Keytips would not dismiss a menu launched by mouse. [476533, PresentationFramework.dll, Bug]
  • Under certain conditions, a WPF application running on a touch or stylus-enabled machine could possibly see hangs or crashes associated with touch or stylus input. This would manifest as time spent searching a dictionary on one of the Stylus Input threads. This change fixes this issue. [485595, PresentationCore.dll, Bug]
  • Added a new method to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that returns the ResourceDictionaries created for a given source Uri. This method is for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494203, PresentationFramework.dll, Feature]
  • Added new methods to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that return the owners of a given ResourceDictionary. These methods are for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494205, PresentationFramework.dll, Feature]
  • Added a new event to the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class that reports when StaticResource references are resolved. This event is for use by diagnostic assistants such as Visual Studio's "UI Debug Tools". [494207, PresentationFramework.dll, Feature]
  • Fixed rendering issues in Windows Presentation Foundation (WPF) applications that are run within a Windows service that may occur with the September 12, 2017, .NET Security and Quality Rollups that apply to the .NET Framework 4.6, 4.6.1, 4.6.2, and 4.7. [494626, PresentationCore.dll, Bug]
  • Reliability improvements for WPF applications running on touch or stylus-enabled machines with long periods of touch inactivity. [514949, PenIMC.dll, Bug]
  • In a specific case(s), the System.Windows.Controls.PrintDialog() throws an Arithmetic Overflow exception. This change fixes that issue. [514977, PresentationFramework.dll, Bug]
  • A WPF TreeView with virtualization and pixel-scrolling enabled can experience a StackOverflowException due to infinite recursion when (a) all the TreeViewItems have the same height, and (b) the user scrolls to a position just before an item boundary - within a millionth of a pixel. [519728, PresentationFramework.dll, Bug]
  • Some dual GPU machines may experience visual artifacts while running WPF apps in high contrast, this issue is now fixed. [525011, PresentationCore.dll, Bug]
  • Fixed the issue described in https://github.com/NuGet/Home/issues/5894 [530595, PresentationBuildTasks.dll, Microsoft.WinFX.targets, Bug]
  • Applications loading two versions of the same resource assembly may get XamlParseExceptions for resources not found, even when the resource exists in the assembly. This issue is fixed for applications that set the AppContext flag Switch.System.Windows.Baml2006.AppendLocalAssemblyVersionForSourceUri to false. [546550, PresentationCore.dll; PresentationFramework.dll, Bug]

New in Microsoft .NET Framework 4.7.1 (Oct 18, 2017)

  • CORE:
  • Support for .NET Standard 2.0:
  • .NET Standard defines a set of APIs that must be available on each .NET implementation that supports that version of the standard. The .NET Framework 4.7.1 fully supports .NET Standard 2.0 and adds about 200 APIs that are defined in .NET Standard 2.0 and are missing from the .NET Framework 4.6.1, 4.6.2, and 4.7. (Note that these versions of the .NET Framework support .NET Standard 2.0 only if additional .NET Standard support files are also deployed on the target system.)
  • Support for configuration builders:
  • Configuration builders allow developers to inject and build configuration settings for applications dynamically at run time. Custom configuration builders can be used to modify existing data in a configuration section or to build a configuration section entirely from scratch. Without configuration builders, .config files are static, and their settings are defined some time before an application is launched.
  • To create a custom configuration builder, you derive your builder from the abstract ConfigurationBuilder class and override its ConfigurationBuilder.ProcessConfigurationSection and ConfigurationBuilder.ProcessRawXml. You also define your builders in your .config file.
  • Run-time feature detection:
  • The System.Runtime.CompilerServices.RuntimeFeature class provides a mechanism for determine whether a predefined feature is supported on a given .NET implementation at compile time or run time. At compile time, a compiler can check whether a specified field exists to determine whether the feature is supported; if so, it can emit code that takes advantage of that feature. At run time, an application can call the RuntimeFeature.IsSupported method before emitting code at runtime. For more information, see Add helper method to describe features supported by the runtime.
  • Value tuple types are serializable:
  • Starting with the .NET Framework 4.7.1, System.ValueTuple and its associated generic types are marked as Serializable, which allows binary serialization. This should make migrating Tuple types, such as Tuple<T1,T2,T3> and Tuple<T1,T2,T3,T4>, to value tuple types easier.
  • Support for read-only references:
  • The .NET Framework 4.7.1 adds the System.Runtime.CompilerServices.IsReadOnlyAttribute. This attribute is used by language compilers to mark members that have read-only ref return types or parameters. For more information, see "Compiler -- Support for ReadOnlyReferences" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post. For information on ref return values, see Ref return values and ref locals (C# Guide) and Ref return values (Visual Basic).
  • COMMON LANGUAGE RUNTIME (CLR):
  • Garbage collection performance improvements:
  • Changes to garbage collection (GC) in the .NET Framework 4.7.1 improve overall performance, especially for Large Object Heap (LOH) allocations. In the .NET Framework 4.7.1, separate locks are used for Small Object Heap (SOH) and LOH allocations, which allows LOH allocations to occur when Background GC (BGC) is sweeping the SOH. As a result, applications that make a large number of LOH allocations should see a reduction in allocation lock contention and improved performance.
  • Support for portable PDBs:
  • The .NET Framework starting with version 4.7.1 supports portable PDBs. While standard PDB files are Windows-only, portable PDB files can be created and read on all platforms. In most cases, the file format is transparent to an application running on a particular .NET implementation. An exception is an application that dynamically emits an assembly at run time; in this case, the ability to emit a portable PDB can offer a performance improvement and reduce the application's memory footprint. You can determine at run time whether portable PDBs are supported on the current .NET implementation by passing the string "PortablePdb" to the RuntimeFeature.IsSupported(String) method before emitting the assembly.
  • NETWORKING:
  • SHA-2 support for Message.HashAlgorithm:
  • In the .NET Framework 4.7 and earlier versions, the Message.HashAlgorithm property supported values of HashAlgorithm.Md5 and HashAlgorithm.Sha only. Starting with the .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, and HashAlgorithm.Sha512 are also supported. Whether this value is actually used depends on MSMQ, since the Message instance itself does no hashing but simply passes on values to MSMQ.
  • ASP.NET:
  • Execution steps in ASP.NET applications:
  • ASP.NET processes requests in a predefined pipeline that includes 23 events. ASP.NET executes each event handler as an execution step. In versions of ASP.NET up to the .NET Framework 4.7, ASP.NET can't flow the execution context due to switching between native and managed threads. Instead, ASP.NET selectively flows only the HttpContext. Starting with the .NET Framework 4.7.1, the HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) method also allows modules to restore ambient data. This feature is targeted at libraries concerned with tracing, profiling, diagnostics, or transactions, for example, that care about the execution flow of the application.
  • ASP.NET HttpCookie parsing:
  • The .NET Framework 4.7.1 includes a new method, HttpCookie.TryParse, that provides a standardized way to create an HttpCookie object from a string and accurately assign cookie values such as expiration date and path.
  • SHA-2 hash options for ASP.NET forms authentication credentials:
  • In the .NET Framework 4.7 and earlier versions, ASP.NET allowed developers to store user credentials with hashed passwords in configuration files using either MD5 or SHA1. Starting with the .NET Framework 4.7.1, ASP.NET also supports new secure SHA-2 hash options such as SHA256, SHA384, and SHA512. SHA1 remains the default, and a non-default hash algorithm can be defined in the web configuration file.

New in Microsoft .NET Framework 4.7.1 Preview (Sep 14, 2017)

  • ASP.NET:
  • Fixed the scenario where ASP.NET's custom errors feature does not work if the URL being requested contains a filesystem reserved keyword. [217022, System.Web.dll, Bug]
  • Fixed the scenario where the content-type header is not set in the response if HttpResponse.Redirect is called before executing handler. [360276, system.web.dll, bug]
  • Fixed leaking cache items in System.Runtime.MemoryCache when multiple threads race to add an item with the same ID. [388335, System.Runtime.Caching.dll, Bug]
  • Fixed an accessibility problem to have consistent identification for table items. [449101, System.Web.Extensions.Design.dll, Bug]
  • Fixed spurious xhtml5 warnings in Visual Studio for web forms application development. [450875, System.Web.Extensions.dll, Bug]
  • Fixed bug with absolute expiration time when using System.Web.Caching.Cache.Insert(). [453771, System.Web.dll, Bug]
  • Fixed accessibility problem where a visually impared user can have less difficulty in identifying property grid entries in high contrast mode for property headers. [459055, System.Web.Extensions.Design.dll, Bug]
  • ASP.NET developers now can use this public API to parse a string from SetCookie header to a HttpCookie object: static bool HttpCookie.TryParse(string s, out HttpCookie result) [402902, System.Web.dll, [Feature]
  • Added support for SHA-2 hash algorithms for ASP.NET Forms Authentication password format. [405231, System.Web.dll, Feature]
  • HttpApplication.OnExecuteStep provides extensibility to ASP.NET pipeline to make it easy for developers to implement features in ambient context pattern and build libraries that cares about ASP.NET execution flow. [406437, System.Web.dll, Feature]
  • BCL:
  • Fixed a race condition in resource manager which leads to multiple CultureInfo getting created and presented to the client code. This is also fixed in .NET Core - dotnet/coreclr #8656 [99146, mscorlib.dll, Bug]
  • Improved reliability of Parallel.For on x86 systems. [99779, mscorlib.dll, Bug]
  • Fixed an issue where two threads attempting to load the same assembly may crash the process. [211676, mscorlib.dll, Bug]
  • Fixed an issue in ReaderWriterLockSlim where an attempt to enter a write lock that times out does not release waiting attempts to acquire read or upgradeable read locks [216022, System.Core.dll, Bug]
  • Improved performance of AesCng and TripleDESCng with in-memory keys. [271987, System.Core.dll, Bug]
  • Improved performance in NamedPipeClientStream Connect area. [288338, System.Core.dll, Bug]
  • Removed an unnecessary line break in the exception text in Russian locale. [299044, mscorlib.dll, Bug]
  • Fixed a performance issue with Task.WhenAny. When a task was repeatedly used in Task.WhenAny, the performance of WhenAny may have degraded over time. [372594, mscorlib.dll, Bug]
  • Fixed Access Violation problem in ComCallUnmarshal::UnmarshalInterface. [380021, mscorlib.dll, Bug]
  • Updated SignedXML and SignedCMS to use SHA256 as a default over SHA1. SHA1 may still be used by selected as a default by enabling a context switch. [397307, System.Security.dll, Bug]
  • Updated SignedXML and SignedCMS to use SHA256 as a default over SHA1. SHA1 may still be used by selected as a default by enabling a context switch. [397641, System.Security.dll, Bug]
  • Fixed a bug introduced in .NET 4.6.2 that caused RSACng and DSACng to not be usable in Partial Trust scenarios [400499, System.Core.dll, Bug]
  • Fixed a bug in ETW rundown that hung the process. [409381, mscorlib.dll, Bug]
  • Added a switch to SignedXML to use the certificates PublicKey.Key property instead of GetAnyPublicKey. [432261, System.Security.dll, Bug]
  • When tasks are awaited on background threads that have a DispatcherQueue associated with them, the continuations for the tasks will now be posted on the same thread via the DispatcherQueue. [437118, mscorlib.dll, Bug]
  • Enable support for .NET Standard 2.0 in .NET 4.7.1. [404774, mscorlib.dll, Feature]
  • Added IsReadOnlyAttribute to System.Runtime.CompilerServices [407211, mscorlib.dll, Feature]
  • Added helper method to describe features supported by the runtime. [407212, mscorlib.dll, Feature]
  • Added an attribute System.Runtime.CompilerServices.IsRefLikeAttribute [429642, mscorlib.dll, Feature]
  • Enabled interop between StorageFile / StorageFolder and .NET types for filesystem access [433898, mscorlib.dll, Feature]
  • System.Runtime.CompilerServices.RuntimeFeature.IsSupported allows to check whether the runtime supports displaying source line information for stack frames in assemblies built with portable symbols (PDBs). This is common for libraries that are built targeting .Net standard. [436315, mscorlib.dll, Feature]
  • CLR:
  • Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This issue is fixed by triggering a GC of an appropriate generation based on the number of threads. [134926, clr.dll, Bug]
  • Fixed reliability problem for using string hashing before initializing the appdomain which used to crash the apps. This is also fixed in .NET Core - dotnet/coreclr #10843 [213531, clr.dll, Bug]
  • Exceptions from services that fail to start will now be propagated from ServiceBase.Run. [226883, System.ServiceProcess.dll, Bug]
  • Fixed a silent bad code generation issue in RyuJit. The conditions for the silent bad code generation are as follows: [282492, clrjit.dll, Bug]
  • The method has a tail call that the JIT decides to dispatch as a fast tail call (without calling a helper).
  • Both the caller and the callee have arguments passed on the stack.
  • One of the arguments passed on the stack to the caller is a 1, 2, 4, or 8-byte struct.
  • Some or all of the fields of that struct are used to compute a callee argument passed in a register.
  • If the abovementioned conditions are met, the JIT may generate bad code for the callee register argument. The callee will see an incorrect value.
  • Improved resiliency to shutdown finalization for portable PDB. [360526, System.dll, Bug]
  • Fixed a rare issue that can cause hangs in programs that use background GC and exhibit specific patterns of GC handle usage. [369415, clr.dll, Bug]
  • Fixed a deadlock in TraceSource initialization. [387336, System.dll, Bug]
  • After many instances of ReaderWriterLock are created, an instance may hang while upgrading to a write lock. A new configuration variable is exposed, and may be specified as an environment variable (COMPlus_ReaderWriterLock_UseFixedIdGeneration=1) to fix this problem. [395943, clr.dll, Bug]
  • Fixed intermittent deadlock during GC with complex generic types. [399387, clr.dll, Bug]
  • Fixed a problem where rare crashes or deadlocks happens if a GC occurs while another thread is running NGen'ed code which is making the initial call into a static method within the same module where one or more parameter types involve type-forwarded valuetypes. [404234, clr.dll, Bug]
  • Managed threads that exit don't get finalized until a GC of an appropriate generation is triggered. Applications that are mostly idle but occasionally create threads or have timers with long periods may accumulate a large number of handles as shown by Task Manager. This problem is now fixed by triggering a GC of an appropriate generation based on the number of threads that have exited but are not finalized. [407602, clr.dll, Bug]
  • Exception.StackTrace now supports displaying source line information for stack frames in assemblies that use pdbs in the new portable pdb format. This is common for libraries that are built targeting .Net standard. [410959, clr.dll, mscorlib.dll, System.Core.dll, Bug]
  • Fixed intermittent crash during GC with ETW memory tracing turned on. [425084, clr.dll, Bug]
  • SerialPort streams no longer terminate the process when exceptions occur on the background thread. This can happen when removing a USB serial port while in use. This new behavior is controlled by the Switch.System.IO.Ports.DoNotCatchSerialStreamThreadExceptions AppContext switch. This switch is set to truetf get by default when targeting .NET 4.7 or below. [428461, System.dll, Bug]
  • Updated headers to use HTTPS instead of HTTP in URLs. [447119, mscoree.h, cor.h, Bug]
  • Fixed infinite loop in the jit which happens in certain cases where cgt.un is used to implement a null check. [453201, clrjit.dll, Bug]
  • Fixed a silent bad codegen problem in JIT that results in incorrect results from XslCompiledTransform. [461649, clrjit.dll, Bug]
  • Fixed potential crash during CLR shutdown [437163, clr.dll, Bug]
  • Compiler and Managed Languages:
  • Removed unnecessary ITuple constraint from TRest on ValueTuple 8. [363866, mscorlib.dll, Bug]
  • Support for dynamic pattern matching types. [295579, mscorlib.dll, Feature]
  • Added serializable attribute on each ValueTuple types. [378419, mscorlib.dll, Feature]
  • Configuration:
  • Introduced Configuration Builders that allow developers a way to build configuration for applications at runtime from dynamic or centralized sources. [405224, System.Configuration.dll, Feature]
  • Networking:
  • Fixed security vulnerability tracked by Microsoft Common Vulnerabilities and Exposures CVE-2017-0248 [364538, System.dll, Bug]
  • Fixed a problem with HTTP POST requests that require authentication and resubmit. [369338, System.dll, Bug]
  • Add 8 new properties to System.Net.Http.HttpClientHandler to align with NETStandard2.0. [386926, System.Net.Http.dll, Bug]
  • SQL:
  • Fixed a bug in System.Data.SqlClient where exceptions can be thrown while trying to establish a connection to SQL Server due to receiving TDS packets that are smaller than expected. [396402, System.Data.dll, Bug]
  • Enabled sqlclient to connect to the correct instance instead of only default instance when SQL Server 2016 or higher versions is installed in cluster and if it is not the default server. Initially for these scenarios sqlclient was able to connect to only default instance. [400928, System.Data.dll, Bug]
  • WCF:
  • When serializing an object with TimeSpan property, it will write an empty element for TimeSpan property. The fix is to reliably support TimeSpan property in XmlSerializer. [252528, System.Xml.dll, Bug]
  • Task methods now honor the Description attribute in help pages. [274351, System.ServiceModel.Web.dll, Bug]
  • Fixed an incorrect null check issue in AddressHeaderCollection. Afer the fix the actual header (addressHeader) is checked for null and not addressHeaders. [275879, System.ServiceModel.dll, Bug]
  • Fixed reliability problem in Addressing.ReadHeader operator comparison [276385, System.ServiceModel.dll, Bug]
  • Fixed NullReferenceException in waiters null scenario. [284926, System.ServiceModel.dll, Bug]
  • Fixed Narrator accessibility problem - Narrator now announces ‘Configuration’ and ‘Services’ in SvcConfigEditor. [393966, SvcConfigEditor.exe, Bug]
  • Fixed accessibility problem - now hyperlinks can be opened via keyboard in 'Tasks' panel in SvcConfigEditor. [393974, SvcConfigEditor.exe, Bug]
  • Fixed tab order issues in 'Client' panel for SvcConfigEditor. [393991, SvcConfigEditor.exe, Bug]
  • Fixed reliability issues in determination of whether ETW should trace exceptions. [394519, System.ServiceModel.dll, Bug]
  • Changed the hashing algorithm of HttpChannelFactory from SHA1 to SHA256. [395428, System.ServiceModel.dll, Bug]
  • Changed the hashing algorithm of WindowsUserNameCachingSecurityTokenAuthenticator to not use SHA1. [395433, System.ServiceModel.dll, Bug]
  • Changed the hashing algorithm of BuildSharedMemoryName to use SHA256. [395685, System.ServiceModel.dll, Bug]
  • Changed the hashing algorithm of MsmqSecureHashAlgorithm from SHA1 to SHA256. [395687, System.ServiceModel.dll, Bug]
  • Fixed accessibility problem - now Focus area is correct when pressing arrow key to move focus on a new EndPoint node inSvcConfigEditor. [396819, SvcConfigEditor.exe, Bug]
  • Fixed accessibility problem - now focuses are correct when pressing Tab key to move focus on Task area in SvcConfigEditor. [396843, SvcConfigEditor.exe, Bug]
  • Fixed accessibility problem - now Narrator reads the full infomation about the link in runtime window in SvcConfigEditor. [396880, SvcConfigEditor.exe, Bug]
  • Support for the OS default TLS protocol. [405970, System.ServiceModel.dll, Bug]
  • Updated WCF Trace Viewer's controls so all controls now expose the correct properties to screen readers. [424483, SvcTraceViewer.exe , Bug]
  • Some text in the WCF Trace Viewer did not contrast enough to be visible for all users. Updated font colors so it should always be visible. [424484, 424485, 424488, SvcTraceViewer.exe, Bug]
  • Some text in the WCF Trace Viewer did follow high contrast standards when using high contrast themes. Adjusted text to use the correct colors in these themes. [424924, SvcTraceViewer.exe, Bug]
  • Some controls in the WCF Trace Viewer were not accessible using the keyboard because they were not marked as tab stops. Added these to the tab order and these are now accessible using the keyboard. [424942, 424944, SvcTraceViewer.exe, Bug]
  • Fixed NullReferenceException when accessing AllowedSecurityIdentifiers if allowedUsers is null. [447641, System.ServiceModel.dll, Bug]
  • Windows Forms:
  • MenuStrip.MdiWindowListItem drop down menu now displays accurate list of available child windows. [241047, System.Windows.Forms.dll, Bug]
  • Recent changes in the Mage signing tool had enabled only Current User HSM keys, we have now enabled support for LM keys. [266936, Mage.exe, Bug]
  • HDPI improvements in ThreadExceptionDialog [372899, System.Windows.Forms.dll, Bug]
  • Fixed an incorrectly translated Print dialog issue for Chinese Simplified or Traditional. [398471, System.Windows.Forms.dll, Bug]
  • Fixed the problem where a static constructor for ConfigurationOptions class throws an exception when TargetFrameworkName in appdomain is null. [401520, System.Windows.Forms.dll, System.Design.dll, Bug]
  • MonthCalendar control is now accessible via narrator and other UI automation tools. [409745, System.Windows.Forms.dll, Bug]
  • Fixed multi-mon DPI awareness problem in control anchoring distance scaling [454161, System.Windows.Forms.dll, Bug]
  • WinForms is improving how it works with accessibility aids to better support WinForms customers. Specifically, there are changes to improve display during HighContrast mode, to improve the property browser experience and to implement missing accessibility patterns in controls. Property Browser improvements will include better keyboard navigation though the various drop down selection windows, reduced unnecessary tab stops, better reporting of control types, and improved Narrator behavior. [364507, 366444, 382153, 382195, 382373, 384922, 386113, 386118, 386123, 386173, 386221, 386386, 386420, 387172, 392706, 394788, 395785, 396128, 396905, 399055, 399067, 399988, 404882, 404885, 407249, 407451, 409745, 411616, 411645, 426764, 427010, 428277, 430685, 434763, 436154, 436313, 437010, 437011, 437700, 437912, 449452, 457326, 461557, System.Windows.Forms.dll, Bug]
  • Workflow:
  • Fixed rendering error in Workflow designer in Sharepoint. [361982, System.Activities.Presentation.dll, Bug]
  • Improved accessibility in Workflow designer. Specifically there are fixes in high contrast mode, focus of different controls and dialogs and name properties [407062, 407067, 407068, 407069, 407070, 407072, 407075, 407076, 407080, 407085, 407086, 407097, 407407, 407408, 407411, 407414, 407415, 407428, 407436, 407442, 407444, 407450, 407462, 407463, 407467, 408030, 408035, 408043, 408073, 408077, 408158, 408282, 408315, 408329, 409027, 409645, 409719, 409723, 409731, 434137, 445109, 447654, System.Activities.Presentation.dll, Bug]
  • New enumerator values are added for System.Messaging.HashAlgorithm to allow developers to choose SHA256, SHA384, and SHA512. Also, the default hashing algorithm if one is not specified is SHA512. For backward compatibility where customers must continue to use MD5, the following must be added to the app.config file for the application: [394583, System.Messaging.dll, Feature]
  • <runtime>
  • <AppContextSwitchOverrides value=""Switch.System.Messaging.UseMD5ForDefaultHashAlgorithm=true;Switch.System.Messaging.UseRC2ForDefaultEncryptionAlgorithm=true"" />
  • </runtime>
  • WPF:
  • Nested popups with StaysOpen="False" now work as expected. [94132, PresentationFramework.dll, Bug]
  • Fixed a bug in which DataGrid displays the wrong value after committing edits to a normalizing property. [158520, PresentationFramework.dll, Bug]
  • On Windows 10, WPF applications running in a locked or disconnected user session sometimes consume CPU cycles unexpectedly. This could also manifest as application crash that is observed as soon as the user logs back onto their session. This fix addresses this problem and improves the overall performance and reliablity of WPF applications running on Windows 10. [165554, WindowsBase.dll, PresentationCore .dll, wpfgfx_v0400.dll, Bug]
  • Fixed crashes and incorrect focus when pressing arrow keys in a TreeView or Ribbon that contains Hyperlinks. [170274, PresentationFramework.dll, Bug]
  • In WPF applications running on Windows 10 Anniversary Update or greater, WPF will automatically invoke the touch keyboard in applicable scenarios. In .NET 4.7.1, WPF applications may opt out of this behavior by adding the following to their application configuration file, merging this switch with the AppContextSwitchOverrides list. [362756, PresentationCore.dll, Bug]
  • Support for font changes from Windows 10 Creators Update that involves updates to WPF font fallbacks. [368999, PresentationCore.dll, Bug]
  • Added LiveSetting/LiveRegion support to WPF’s Automation provider APIs. Developers can now set the LiveSetting dependency property and raise the LiveRegionChanged event via RaiseAutomationEvent. [386494, UIAutomationClient.dll, Bug]
  • Fixed crash when an async binding refers to a dynamic object. [388736, PresentationFramework.dll, Bug]
  • A WPF application running on touch or stylus enabled machines may crash under certain circumstances when a Dispatcher thread is being shutdown or when a tablet or stylus is removed. This fix alleviates that issue by ensuring that objects associated with tablets and styluses are only released when the device is no longer in use. [402947, PenIMC.dll , Bug]
  • Fixed a NullReferenceException thrown during SpellCheck operations after SpellCheck.CustomDictionaries.Clear() is called programmatically. [407524, PresentationFramework.dll, Bug]
  • Fixed a crash occurring when removing the SelectedItem from a collection with a custom implementation of INotifyCollectionChanged that does not report the position of the removed item. [424259, PresentationFramework.dll, Bug]
  • Fixed a crash in PenIMC. [424827, PenIMC.dll , Bug]
  • Applications written in WPF and running on touch/stylus enabled devices leak a handle on shutdown of a Dispatcher thread. This change appropriately cleans up the handle and fixes the leak. [434938, PenIMC.dll , Bug]
  • PackageDigitalSignatureManager.DefaultHashAlgorithm is now SHA256 for applications running on .NET 4.7.1 and targeting .NET 4.6.2 and above. This impacts the default message digest algorithm and signature method for XPS document signing (XpsDocument.SignDigitally) and Package signing (PackageDigitalSignatureManager.Sign). Developers running on .NET 4.7.1 targeting .NET 4.6.2 and above who require SHA1 defaults may enable a compatibility AppContext flag by adding: Switch.MS.Internal.UseSha1AsDefaultHashAlgorithmForDigitalSignatures=true to their AppConfig's AppContextSwitchOverrides. This also allows developers running on .NET 4.7.1 and targeting .NET 4.6.1 and below to enable the new default setting by setting this to false. [436861, WindowsBase.dll, Bug]
  • Fixed an infinite loop that can occur while resizing a Grid when (a) two row definitions declare a *-height, a MinHeight, and a MaxHeight, (b) neither row's content exceeds the MaxHeight, and (c) the first MinHeight, plus any other fixed or Auto rows, exceeds the Grid's available height (even without considering the second MinHeight). There's a similar fix for columns and width. [442027, PresentationFramework.dll, Bug]
  • WPF Accessibility:High Contrast improvements - WPF applications running in high contrast themes, as well as those interacting with screen readers will see various improvements. To enable these changes, set the target framework to 4.7.1 or add "Switch.UseLegacyAccessibilityFeatures=false" to your AppContextSwitchOverrides. [447592, PresentationFramework.dll, PresentationCore.dll, Bug]
  • Fixed problem where WPF fails to load resources if two versions of the same assembly are loaded. [454391, PresentationFramework.dll, Bug]
  • Fixed ComException in PenIMC_v400 that results in WPF application crashes. [463347, PenIMC2_v0400.dll, PenIMC_v0400.dll, Bug]
  • On a machine with touch or stylus device, loading a .NET 3.5 WPF application and a .NET 4.x WPF application side-by-side in the same process can result in heap corruption. This change fixes this problem allowing side-by-side execution in the same process on touch/stylus enabled devices. [377651, PenIMC.dll, PenIMC_v0400.dll, PresentationCore.dll, WindowsBase.dll, Feature]
  • Added support for updating visual tree after changing implicit data template. [406804, PresentationFramework.dll, Feature]
  • Added ability to tell whether a property value inside a template is a dynamic resource reference. [406807, PresentationFramework.dll, Feature]
  • Provided source info for elements in template created by XamlReader.Load [406808, PresentationFramework.dll, Feature]
  • Enabled VisualTree notifications for debugging [406811, PresentationFramework.dll, Feature]

New in Microsoft .NET Framework 4.7 (Apr 7, 2017)

  • .NET Framework 4.7 contains dozens of bug fixes and improvements. This list details those changes, grouped by feature area. Each change includes our TFS bug numbers at the end of the line. Please include those numbers in your communication if you wish to contact us to obtain more information.
  • CLR:
  • Fixed buffer overflows with large manifests in EventSource.
  • If a COM interface contain setter only indexed property, Tlbimp will generate incorrect setter property metadata.
  • Implemented IEnumerator in EventPayload (EventSource).
  • JIT performance improvements
  • Improved performance of creating large numbers of TaskSchedulers when a debugger isn't attached.
  • EventSourceIndex method is now public.
  • Support for ToEventKeywords() method instead of working with keywords directly.
  • Fixed NGen Task to respect battery saver setting.
  • Fixed a bug where null paths would not throw ArgumentNullException.
  • Added the case of Wrong machine code generated by RyuJIT on AVX2-capable CPU to the list of instructions that have this characteristic.
  • Implemented flexibility in specifying Server GC resource consumption.
  • BCL:
  • Opening a cryptographic key with CspParameters.ParentWindowHandle set to this.Handle will now correctly make any PIN or password prompt be modal to the current window
  • Added ValueTuple types to support C# 7.0 and VB 15 tuples
  • Added Name property to Regex.Group.
  • Fixed InvalidPath exception when using FileIOPermissions with device syntax (?),
  • ECDsa and ECDiffieHellman can now import and export key parameters (all OSes) as well as represent points over an expanded set of curves (Win10).
  • Fixed an issue in SerialPort where unplugging the device during execution could cause a memory leak in the SerialStream class.
  • Improved support of RSA decryption with hardware keys
  • Networking:
  • ServicePointManager.SecurityProtocol will default to a new value: SystemDefault which allows applications to use the underlying operating system TLS version selection defaults. New SslStreamAuthenticateAs APIs allow applications to omit the SslProtocols parameter and use the system default. New HashAlgorithmType enum members.
  • Added support for the TLS Alert Protocol
  • Updated HttpListener to handle improvements to the token binding protocol.
  • Fixed pointer offset calculation in HttpListener for token binding struct.
  • ASP.NET:
  • Allows for extensibility of the cache providers that could allow them to operate on new services with less overhead from memory usage.
  • Introduced a new config parameter 'timeoutUnit' for ActiveDirectoryMembershipProvider that can be used to indicate the 'clientSearchTimeout' and 'serverSearchTimeout' values. These should be interpreted as Days/Hours/Minutes/Seconds/Milliseconds. If not specified, the default is Minutes, as was the previous behavior.
  • Customer will see a warning in the windows event log if they have specified to use unsecured password formats in their web application.
  • Fixed assignment issue with max-age value for OutputCache.
  • Fixed an issue with exception handling for custom membership provider scenario.
  • WPF:
  • WPF now uses PrintDocumentPackageTarget instead of the deprecated XpsPrint API.
  • Fixed crash in WPF when typing in text with specific language input
  • The escape sequences have been unescaped in the URLs while converting from XAML to RTF.
  • Fixed crash in DocumentView when receiving input from IMEs.
  • Fixed ribbon crash when Alt + accelerator key is pressed to display the submenu.
  • Previously, large amounts of connects and disconnects of tablet/stylus devices could result in WPF losing all touch support except for promoted mouse messages. This was due to a reference counting issue within WPF and its Windows side touch component (WISP). This change, along with the associated WISP change available in RS2, fixes this situation allowing large numbers of connects and disconnects.
  • Conversion of BaselineOffset property has been added while converting from XAML to RTF and vice versa.
  • Modernize touch stack
  • Fixed crashes in Combobox
  • Added support for alternative delimiter characters in markup.
  • Fixed textbox focus issues
  • Fixed out of memory issues with custom textbox.
  • In some scenarios, shutting down input for a stylus/touch device (program shutdown or device disconnection) could result in a deadlock. This change alleviates that issue by fixing a timing problem with the WPF stylus/tablet initialization and shutdown code.
  • In order to disable the WPF stylus/touch stack developers were previously using a private reflection mechanism. This provides a new mechanism in the form of an AppContext switch. Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport set to true will fully disable the stylus/touch stack without requiring any private reflection or other workarounds.
  • Inheritable properties propagate through a new link in the visual tree, including properties declared in a Style newly enabled by the link because a DynamicResource reference now resolves.
  • ImageSourceConverter.ConvertFromString now throws the correct DirectoryNotFoundException instead of NullReferenceException if called with an invalid path (only on apps targeting .NET Framework 4.7 and above)
  • Fixed IOException crashes arising from Cursor.LoadFromStream, that could happen on application start.
  • Fixed a deadlock arising from re-entrant COM requests while waiting for the lock protecting WPF's weak-event component.
  • Scroll tracing now supports scenarios involving multiple instances of an ItemsControl with the same name, that enter and leave the visual tree dynamically.
  • Some ItemsControls allow null to appear in the ItemsSource. If so, the automation for the control should allow null as well. An app that works in a normal environment should not crash in when automation is present.
  • Fixed an ArgumentException arising from bindings on a non-Visual element declared in a DataGrid cell template.
  • Improved Grid algorithm usages to allocate space to columns declared with *-width. For details refer to Application compatibility changes.
  • Fixed crash arising from displaying certain sequences of Unicode characters deemed (by the font and by DWrite) to have negative advance width.
  • Fixed a crash arising when running two instances of a process that creates multiple large packages when using System.IO.Packaging.
  • When an exception interrupts a PropertyChanged or CollectionChanged notification raised on a worker thread, other such notifications continue to be processed normally.
  • Fixed D3DImage memory leak.
  • Fixed crashes in DataGrid with column virtualization enabled scenario.
  • Improved reliability of anchored scroll scenarios.
  • Support for Async and AddJob scenarios in printing.
  • The content of the selected item in a TabControl is visible to UI Automation, even after changing IsEnabled (or other properties) on the TabItems.
  • WCF:
  • Fixed a bug in SocketConnection.Read which caused the operation to hang when mixing synchronous and asynchronous calls.
  • Support for CNG certificates. For details refer to Application compatibility changes.
  • Support for DataContractJsonSerializer to follow ECMAScript 6 when serializing control character.
  • Fixed process crash in concurrent Dictionary scenario
  • Fixed a race condition on the cleanup path of WCF Tracing that caused an ObjectDisposedException.
  • Enabled WCF message security configuration to use TLS1.1 or TLS1.2. For details refer to Application compatibility changes.
  • Fixed a bug in OperationContext.Current which caused it to return null when called inside an OperationContextScope
  • Ensure no deadlock occurs when two threads try to abort the channel.
  • Workflow:
  • Support for propagating an activity exception as-is instead of throwing a Null Reference Exception. For details refer to Application compatibility changes.
  • Previously when trying to use Visual Studio to debug XAML-based workflows on a machine with FIPS enabled, one would encounter a NullReferenceException. This has been resolved. However, in order to take advantage of this change, you will need to add the following to the App.Config file for the workflow application:
  • <runtime>
  • <AppContextSwitchOverrides value="Switch.System.Activities.UseMD5ForWFDebugger=false" />
  • </runtime>
  • For details refer to Application compatibility changes.
  • SqlWorkflowInstanceStore database now defines Primary Key columns, allowing transactional replication.
  • Windows Forms:
  • Fixed dialog layout for High DPI scenarios
  • Enabled ClickOnce signing scenarios where certificate is identified by a cryptographic provider and private key container names.
  • Docked ListBox controls will now revert to their correct size in the designer when the Dock property is changed to DockStyle.None in the property browser.
  • Fixed properly scaling across dialog control elements, including control padding and sizes in High DPI scenarios.
  • Fixed text clipping in localized versions of .NET SDK tool MageUI.exe.
  • Fixed IndexOutOfRangeException.
  • Fixed clipped buttons in WinRes.exe .Net SDK tool
  • Fixed crashes in Windows Forms Designer that happened when the Windows theme was changed.
  • Fixed an issue in the Windows Forms designer where under some circumstances selecting a ContextMenuStrip causes Visual Studio to crash.
  • Improved reliability of ToolTip control.
  • Fixed reliability issue with ShowPropertyBrowser and Controls
  • Changed the background color of property grid lines to provide an 8:1 contrast ratio for high contrast themes.
  • Improved reliability of the Windows Forms DataGrid control.
  • Fixed control height scaling issues in DPI mode
  • Fixed toolstrip scaling issues in DPI mode
  • Fixed case-insensitivity issues with command line arguments in mage.exe .NET SDK tool.
  • High DPI support for winforms applications via app.config file.
  • Fixed for the proper placement of anchored controls.
  • Fixed control text truncations issue in a Visual Studio dialog.
  • Enable per-monitor scaling in DPI mode
  • SQL:
  • Fixed TransparentNetworkIPResolution (TNIR) Connectivity issues.
  • SQL Client now uses TCP as the default protocol for connections to Azure SQL Database. Previously, SQL Client tried every protocol including viz, Shared Memory, TCP, and Named Pipes to establish a connection to Azure SQL Database, which only supports TCP connections.
  • ClickOnce:
  • Fixed store corruption in ClickOnce application.
  • Added the ability to sign a manifest file via a Hardware-Security Module (HSM) to Mage.exe and MageUI.exe

New in Microsoft .NET Framework 4.6.2 (Aug 2, 2016)

  • ASP.NET:
  • Improved support for localized error messages in data annotation validators:
  • Data annotation validators enable you to perform validation by adding one or more attributes to a class property. The attribute's ValidationAttribute.ErrorMessage element defines the text of the error message if validation fails. Starting with the .NET Framework 4.6.2, ASP.NET makes it easy to localize error messages.
  • Async support with session-state store providers:
  • ASP.NET now allows task-returning methods to be used with session-state store providers, thereby allowing ASP.NET apps to get the scalability benefits of async. To supports asynchronous operations with session state store providers, ASP.NET includes a new interface, System.Web.SessionState.ISessionStateModule, which inherits from IHttpModule and allows developers to implement their own session-state module and async session store providers. In addition, the SessionStateUtility class includes two new methods, IsSessionStateReadOnly and IsSessionStateRequired, that can be used to support asynchronous operations.
  • Async support for output-cache providers:
  • Starting with the .NET Framework 4.6.2, task-returning methods can be used with output-cache providers to provide the scalability benefits of async. Providers that implement these methods reduce thread-blocking on a web server and improve the scalability of an ASP.NET service. The following APIs have been added to support asynchronous output-cache providers:
  • The System.Web.Caching.OutputCacheProviderAsync class, which inherits from System.Web.Caching.OutputCacheProvider and allows developers to implement an asynchronous output-cache provider.
  • The OutputCacheUtility class, which provides helper methods for configuring the output cache.
  • 18 new methods in the System.Web.HttpCachePolicyclass. These include GetCacheability, GetCacheExtensions, GetETag, GetETagFromFileDependencies, GetMaxAge, GetMaxAge, GetNoStore, GetNoTransforms, GetOmitVaryStar, GetProxyMaxAge, GetRevalidation, GetUtcLastModified, GetVaryByCustom, HasSlidingExpiration, and IsValidUntilExpires.
  • 2 new methods in the System.Web.HttpCacheVaryByContentEncodings class: GetContentEncodings and SetContentEncodings.
  • 2 new methods in the System.Web.HttpCacheVaryByHeaders class: GetHeaders and SetHeaders.
  • 2 new methods in the System.Web.HttpCacheVaryByParams class: GetParams and SetParams.
  • In the System.Web.Caching.AggregateCacheDependency class, the GetFileDependencies method.
  • In the CacheDependency, the GetFileDependencies method.
  • CHARACTER CATEGORIES:
  • Characters in the .NET Framework 4.6.2 are classified based on the Unicode Standard, Version 8.0.0. In .NET Framework 4.6 and .NET Framework 4.6.1, characters were classified based on Unicode 6.3 character categories.
  • Support for Unicode 8.0 is limited to the classification of characters by the CharUnicodeInfo class and to types and methods that rely on it. These include the StringInfo class, the overloaded Char.GetUnicodeCategory method, and the character classes recognized by the .NET Framework regular expression engine. Character and string comparison and sorting is unaffected by this change and continues to rely on the underlying operating system or, on Windows 7 systems, on character data provided by the .NET Framework.
  • CRYPTOGRAPHY:
  • Support for X509 certificates containing FIPS 186-3 DSA:
  • The .NET Framework 4.6.2 adds support for DSA (Digital Signature Algorithm) X509 certificates whose keys exceed the FIPS 186-2 1024-bit limit.
  • In addition to supporting the larger key sizes of FIPS 186-3, the .NET Framework 4.6.2 allows computing signatures with the SHA-2 family of hash algorithms (SHA256, SHA384, and SHA512). FIPS 186-3 support is provided by the new System.Security.Cryptography.DSACng class.
  • In keeping with recent changes to the RSA class in the .NET Framework 4.6 and the ECDsa class in the .NET Framework 4.6.1, the DSA abstract base class in .NET Framework 4.6.2 has additional methods to allow callers to use this functionality without casting.
  • Increased clarity for inputs to ECDiffieHellman key derivation routines:
  • The .NET Framework 3.5 added support for Ellipic Curve Diffie-Hellman Key Agreement with three different Key Derivation Function (KDF) routines. The inputs to the routines, and the routines themselves, were configured via properties on the ECDiffieHellmanCng object. But since not every routine read every input property, there was ample room for confusion on the past of the developer.
  • To address this in the .NET Framework 4.6.2, the following three methods have been added to the ECDiffieHellman base class to more clearly represent these KDF routines and their inputs: DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]), DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]), DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[])
  • Support for persisted-key symmetric encryption:
  • The Windows cryptography library (CNG) added support for storing persisted symmetric keys and using hardware-stored symmetric keys, and the .NET Framework 4.6.2 mades it possible for developers to make use of this feature. Since the notion of key names and key providers is implementation-specific, using this feature requires utilizing the constructor of the concrete implementation types instead of the preferred factory approach (such as calling Aes.Create). Persisted-key symmetric encryption support exists for the AES (AesCng) and 3DES (TripleDESCng) algorithms.
  • SignedXml support for SHA-2 hashing:
  • The .NET Framework 4.6.2 adds support to the SignedXml class for RSA-SHA256, RSA-SHA384, and RSA-SHA512 PKCS#1 signature methods, and SHA256, SHA384, and SHA512 reference digest algorithms. The URI constants are all exposed on SignedXml. Any programs that have registered a custom SignatureDescription handler into CryptoConfig to add support for these algorithms will continue to function as they did in the past, but since there are now platform defaults, the CryptoConfig registration is no longer necessary.
  • SQLCLIENT:
  • Connection pooling and timeouts with Azure SQL databases:
  • When connection pooling is enabled and a timeout or other login error occurs, an exception is cached, and the cached exception is thrown on any subsequent connection attempt for the next 5 seconds to 1 minute. For more details, see SQL Server Connection Pooling (ADO.NET).
  • This behavior is not desirable when connecting to Azure SQL Databases, since connection attempts can fail with transient errors that are typically recovered quickly. To better optimize the connection retry experience, the connection pool blocking period behavior is removed when connections to Azure SQL Databases fail.
  • The addition of the new PoolBlockingPeriod keyword lets you to select the blocking period best suited for your app.
  • Enhancements for Always Encrypted:
  • To improve performance of parameterized queries against encrypted database columns, encryption metadata for query parameters is now cached. With the SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled property set to true (which is the default value), if the same query is called multiple times, the client retrieves parameter metadata from the server only once
  • Column encryption key entries in the key cache are now evicted after a configurable time interval, set using the SqlConnection.ColumnEncryptionKeyCacheTtl property
  • WINDOWS COMMUNICATION FOUNDATION:
  • WCF transport security support for certificates stored using CNG:
  • WCF transport security supports certificates stored using the Windows cryptography library (CNG). In the .NET Framework 4.6.2, this support is limited to using certificates with a public key that has an exponent no more than 32 bits in length. When an application targets the .NET Framework 4.6.2, this feature is on by default.
  • For applications that target the .NET Framework 4.6.1 and earlier but are running on the .NET Framework 4.6.2, this feature can be enabled by adding the following line to the section of the app.config or web.config file.
  • Better support for multiple daylight saving time adjustment rules by the DataContractJsonSerializer class:
  • Customers can use an application configuration setting to determine whether the DataContractJsonSerializer class supports multiple adjustment rules for a single time zone. This is an opt-in feature. To enable it, add the following setting to your app.config file.
  • When this feature is enabled, a DataContractJsonSerializer object uses the TimeZoneInfo type instead of the TimeZone type to deserialize date and time data. TimeZoneInfo supports multiple adjustment rules, which makes it possible to work with historic time zone data; TimeZone does not.
  • Support for preserving a UTC time when serializing and deserializing with the XMLSerializer class:
  • Ordinarily, when the XmlSerializer class is used to serialize a UTC DateTime value, it creates a serialized time string that preserves the date and time but assumes the time is local. For example, if you instantiate a UTC date and time by calling the following code.
  • NetNamedPipeBinding best match:
  • WCF has a new app setting that can be set on client applications to ensure they always connect to the service listening on the URI that best matches the one that they request. With this app setting set to false (the default), it is possible for clients using NetNamedPipeBinding to attempt to connect to a service listening on a URI that is a substring of the requested URI.
  • For example, a client tries to connect to a service listening at net.pipe://localhost/Service1, but a different service on that machine running with administrator privilege is listening at net.pipe://localhost. With this app setting set to false, the client would attempt to connect to the wrong service. After setting the app setting to true, the client will always connect to the best matching service.
  • SSL 3.0 is not a default protocol:
  • When using NetTcp with transport security and a credential type of certificate, SSL 3.0 is no longer a default protocol used for negotiating a secure connection. In most cases, there should be no impact to existing apps, because TLS 1.0 is included in the protocol list for NetTcp. All existing clients should be able to negotiate a connection using at least TLS 1.0. If Ssl3 is required, use one of the following configuration mechanisms to add it to the list of negotiated protocols.
  • The SslStreamSecurityBindingElement.SslProtocols property
  • The TcpTransportSecurity.SslProtocols property
  • The section of the section
  • The section of the section
  • WINDOWS PRESENTATION FOUNDATION:
  • Group sorting:
  • An application that uses a CollectionView object to group data can now explicitly declare how to sort the groups. Explicit sorting addresses the problem of non-intuitive ordering that occurs when an app dynamically adds or removes groups, or when it changes the value of item properties involved in grouping. It can also improve the performance of the group creation process by moving comparisons of the grouping properties from the sort of the full collection to the sort of the groups.
  • To support group sorting, the new GroupDescription.SortDescriptions and GroupDescription.CustomSort properties describe how to sort the collection of groups produced by the GroupDescription object. This is analogous to the way the identically named ListCollectionView properties describe how to sort the data items.
  • Two new static properties of the PropertyGroupDescription class, CompareNameAscending and CompareNameDescending, can be used for the most common cases.
  • For example, the following XAML groups data by age, sort the age groups in ascending order, and group the items within each age group by last name.
  • Soft keyboard support:
  • Soft Keyboard support enables focus tracking in a WPF applications by automatically invoking and dismissing the new Soft Keyboard in Windows 10 when the touch input is received by a control that can take textual input.
  • In previous versions of the .NET Framework, WPF applications cannot opt into the focus tracking without disabling WPF pen/touch gesture support. As a result, WPF applications must choose between full WPF touch support or rely on Windows mouse promotion
  • Per-monitor DPI:
  • To support the recent proliferation of high-DPI and hybrid-DPI environments for WPF apps, WPF in the .NET Framework 4.6.2 enables per-monitor awareness. See the samples and developer guide on GitHub for more information about how to enable your WPF app to become per-monitor DPI aware.
  • In previous versions of the .NET Framework, WPF apps are system-DPI aware. In other words, the application's UI is scaled by the OS as appropriate, depending on the DPI of the monitor on which the app is rendered. ,
  • For apps running under the .NET Framework 4.6.2, you can disable per-monitor DPI changes in WPF apps by adding a configuration statement to the section of your application configuration file.
  • WINDOWS WORKFLOW FOUNDATION:
  • Support for C# expressions and IntelliSense in the Re-hosted WF Designer
  • Starting with the .NET Framework 4.5, WF supports C# expressions in both the Visual Studio Designer and in code workflows. The Re-hosted Workflow Designer is a key feature of WF that allows for the Workflow Designer to be in an application outside Visual Studio (for example, in WPF). Windows Workflow Foundation provides the ability to support C# expressions and IntelliSense in the Re-hosted Workflow Designer.
  • Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio:
  • In versions of the .NET Framework prior to the .NET Framework 4.6.2, WF Designer IntelliSense is broken when a customer rebuilds a workflow project from Visual Studio. While the project build is successful, the workflow types are not found on the designer, and warnings from IntelliSense for the missing workflow types appear in the Error List window. The .NET Framework 4.6.2 addresses this issue and makes IntelliSense available.
  • Workflow V1 applications with Workflow Tracking on now run under FIPS-mode:
  • Machines with FIPS Compliance Mode enabled can now successfully run a workflow Version 1-style application with Workflow tracking on. To enable this scenario, you must make the following change to your app.config file: 'add key="microsoft:WorkflowRuntime:FIPSRequired" value="true" /'
  • Workflow Improvements when using Dynamic Update with Visual Studio Workflow Designer:
  • The Workflow Designer, FlowChart Activity Designer, and other Workflow Activity Designers now successfully load and display workflows that have been saved after calling the DynamicUpdateServices.PrepareForUpdate method. In versions of the .NET Framework before the .NET Framework 4.6.2, loading a XAML file in Visual Studio for a workflow that has been saved after calling DynamicUpdateServices.PrepareForUpdate can result in the following issues:
  • The Workflow Designer can't load the XAML file correctly (when the ViewStateData.Id is at the end of the line).
  • Flowchart Activity Designer or other Workflow Activity Designers may display all objects in their default locations as opposed to attached property values.
  • CLICKONCE:
  • ClickOnce has been updated to support TLS 1.1 and TLS 1.2 in addition to the 1.0 protocol, which it already supports. ClickOnce automatically detects which protocol is required; no extra steps within the ClickOnce application are required to enable TLS 1.1 and 1.2 support.
  • CONVERTING WINDOWS FORMS AND WPF APPS TO UWP APPS:
  • Windows now offers capabilities to bring existing Windows desktop apps, including WPF and Windows Forms apps, to the Universal Windows Platform (UWP). This technology acts as a bridge by enabling you to gradually migrate your existing code base to UWP, thereby bringing your app to all Windows 10 devices.
  • Converted desktop apps gain an app identity similar to the app identity of UWP apps, which makes UWP APIs accessible to enable features such as Live Tiles and notifications. The app continues to behave as before and runs as a full trust app. Once the app is converted, an app container process can be added to the existing full trust process to add an adaptive user interface. When all functionality is moved to the app container process, the full trust process can be removed and the new UWP app can be made available to all Windows 10 devices.
  • DEBUGGING IMPROVEMENTS:
  • The unmanaged debugging API has been enhanced in the .NET Framework 4.6.2 to perform additional analysis when a NullReferenceException is thrown so that it is possible to determine which variable in a single line of source code is null. To support this scenario, the following APIs have been added to the unmanaged debugging API.
  • The ICorDebugCode4, ICorDebugVariableHome, and ICorDebugVariableHomeEnum interfaces, which expose the native homes of managed variables. This enables debuggers to do some code flow analysis when a NullReferenceException occurs and to work backwards to determine the managed variable that corresponds to the native location that was null.
  • The ICorDebugType2::GetTypeID method provides a mapping for ICorDebugType to COR_TYPEID, which allows the debugger to obtain a COR_TYPEID without an instance of the ICorDebugType. Existing APIs on COR_TYPEID can then be used to determine the class layout of the type.

New in Microsoft .NET Framework 4.6.1 (Dec 1, 2015)

  • CLR:
  • 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 garbage collection dependent handle ages [145686]
  • Fixed exception handling scopes for IL generated by Roslyn [145835]
  • Fixed incorrect result with RyuJIT and VS 2013 compiler optimizations turned on [145846]
  • Fixed garbage collection access violation in heap expand in corner cases due to slightly off pad ratio [145905]
  • Fixed app packaging resource indexer write access violation at mscoreei!ShimUtil::ReadFileVersion [147707]
  • 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]
  • BCL:
  • System.Diagnostics.Process v4.1.0.0 supported in desktop implementation assemblies [142838]
  • System.ServiceProcess.ServiceController exposes a StartType property [145866]
  • SqlClient has retry logic for cloud service connection opening [145878]
  • SqlClient has improved multi-subnet failover connection behavior for AlwaysOn [117760]
  • HttpListener API exposes TlsUnique to support token-binding [141263]
  • Enhanced the ECDsa RedZone API [142405]
  • No overflow exception when using Level in an EventSourceListener on a Write [94974]
  • No null reference exception when calling EventSource.GenerateManifest(Type, string) when an event method name ends with "Stop" [129244]
  • Added a timeout to HttpOutput when sending a message [130240]
  • More reliable connection of TCP local host with named SQL instance [130340]
  • Vector2/3/4.CopyTo throws the right exception when a null array is passed in [131600]
  • Vector2/3/4.CopyTo doesn't cause access violation when used with a negative startIndex parameter [142102]
  • Vector.CopyTo throws consistent exceptions when running with JIT intrinsics [142413]
  • Fixed access violation in Vector.CopyTo on an AVX2 machine [146428]
  • Fixed SIMD Vector.Equals on AVX [133633]
  • Vector3.Dot doesn't cause access violation when value is not stored [142555]
  • Vector4 constructor evaluates argument list left to right [142843]
  • Optimized memory usage by HttpListenerAsyncEventArgs [109754]
  • Fixed a null reference exception in XML validation [111660]
  • AppContext.BaseDirectory is configurable [142857]
  • Fixed Serbian culture date parsing issue [144893]
  • Fixed Norwegian culture date parsing issue [145872]
  • TransparentNetworkIPResolution works with more than 64 IPs in DNS [147652]
  • SqlBulkCopy works for data movement from encrypted to plain text nchar columns [149383]
  • Transparent network IP resolution works if TCP protocol isn't explicitly defined [149824]
  • Enumerating cultures yields both Persian languages [145823]
  • An archive created with System.IO.Compression.ZipFile.CreateFromDirectory preserves directory structure when unpacked on OSX [142220]
  • SqlClient always encrypted supports hardware-protected keys [116442]
  • Added support for Token Binding for server-side usage of HttpListener [119817]
  • Uri constructor doesn't throw ArgumentOutOfRangeException when parsing certain URIs with escaped international characters [123235]
  • Fixed a bug that prevented some localized text from displaying properly [145634]
  • Fixed a bug that caused the Exception Catch event to get the incorrect source line [142525]
  • ASP.NET:
  • TreeNode.ImageTooltip is rendered as title attribute [101518]
  • Access to WebAdminFiles re-enabled [144513]
  • Fixed 4.6 regression in DataBoundControl.PerformSelect() [145931]
  • MaintainScrollPositionOnPostBack works with zoom on Chrome [120243]
  • RegEx can be opted out for EmailAddresses, Phone, and URL attributes [142685]
  • Added a MatchTimeout property to RegularExpressionAttribute [142685]
  • WPF:
  • Listbox items can be selected by touch on high precision touch panel [141237]
  • Underline can be applied after strikethrough [141662]
  • Fixed a crash in XAML in Xceed.Wpf.Toolkit [141966]
  • ListCollectionView with NewItemPlaceHolderPosition.AtBeginning removes the last element, not the one before it [93418]
  • Fixed an app hang case when scrolling [99716]
  • SelectedItem property in DataGrid and UI are in sync even when the selected item is off-screen [117243]
  • Fixed an exception in System.Windows.Documents.ImmComposition.OnGotFocus [117523]
  • Adding an object to the end of a collection causes correct argument to be passed to VirtualizingPanel.OnItemsChanged [130980]
  • TextRange.Save using DataFormats.Rtf exports the last block from FlowDocument [131881]
  • Fixed leak of ImmComposition objects in System.Windows.Documents.ImmComposition.GetImmComposition [133134]
  • Fixed a hang when scrolling TreeView with large indent [141179]
  • Calling window.open from WebBrowser control doesn't result in access denied script error [141608]
  • Fixed layout when item-scrolling TreeView [122337]
  • Adding an item to CompositeCollection doesn't cause ItemsControl.SelectedIndex to incorrectly increment [122826]
  • Glyph elements containing alphanumeric characters aren't always printed using MS Sans Serif [142597]
  • VisualTreeUtils.AsNonNullVisual doesn't throw argument null exception when scrolling TreeView [142874]
  • Virtualizing TreeView doesn't cause it to scroll to random positions when collapsed and expanded [142912]
  • Fixed null reference exception from DataGridCellsPanel.HasCorrectRealizedColumns [143791]
  • Fixed a crash when deleting content from RichTextBox when a drawing tablet is installed [143800]
  • XamlReader.Save doesn't add extra text when using XmlWriterSettings.Indent [147082]
  • Printed characters not blurred if the printed XPS file uses transparent colors [147123]
  • All items are printed in XPS file using transparent colors [147125]
  • Added support for custom dictionaries in spell checking [142722]
  • Restored spell checking features on Windows 10 [142577]
  • Fixed a deadlock due to reentrancy in property changed handlers [145690]
  • Fixed ReadyToRun bugs that affected managed C++ and IL assemblies [145692]
  • Xmlns entries in XAML files withoug code behind don't cause usings to be added to the next XAML file compiled [145704]
  • Fixed the rendering of certain unicode characters on Windows 10 [145727]
  • Eliminated a delay in touch events [143839]
  • Improved touch performance when manipulating image [142488]
  • Fixed a null reference exception in GridViewHeaderRowPresenter when Columns is set to null during measure [142184]
  • WPF doesn't stop promoting touch to click after digitizer is removed and reconnected while touching the digitizer [142019]
  • Fixed TextBox argument exception when using some Chinese characters [141693]
  • Improved RichTextBox typing performance on low-end GPU [141828]
  • Chrome doesn't turn black on maximize on Windows 8.1 when GlassFrameThickness is -1 [124835]
  • Fixed a case where a button click event wasn't raised after deactivating the application's window [141633]
  • RichTextBox spellcheck corrections don't create double possessives [141660]
  • Data binding for elements in a Popup don't get lost [122280]
  • DatePicker DisplayDate binding works inside DataGrid, DataTemplate, and ControlTemplate [120278]
  • Using the Binding(string) constructor doesn't degrade performance [120967]
  • Fixed a memory leak in TreeView [105337]
  • Changing IsEnabled for a parent of a TextBlock affects its contents [91119]
  • Fixed an issue with partial trust applications running on a machine with a touch device [151160]
  • Fixed a bug caused by loading multiple Microsoft Visual Studio Tools for Office (VSTO) addins on touch enabled devices [142484]
  • Fixed a bug that caused Visual Studio to hang when saving a XAML file [110669]
  • WCF:
  • ServiceThrottle uses double-checked locking pattern for calls, sessions, and dynamic properties [96934]
  • MessageLogger.LogInternal doesn't call TraceXPathNavigator.ToString() [127642]
  • ProtocolException RoutingService to net.tcp doesn't reject all requests after end service recycles [142828]
  • Better performance on base64 strings with spaces [143785]
  • NetHttpBinding handles synchronous callback from WCF service correctly when called via WPF or WinForms app [145832]
  • Fixed a w3wp.exe crash when an exception occurs with WCF activity tracing enabled [145636]
  • Fixed a performance regression in selected large object variations [141815]
  • Binding including message credential over transport allows for messages where the To header is not signed [140756]
  • Fixed a null reference exception in System.Runtime.Serialization when ETW is enabled [105266]
  • Fixed IdentityModel.Claims to support multiple DNS entries [140718]
  • Workflow:
  • Sys.Tx APIs enable distributed transactions with a non-MSDTC coordinator [145813]
  • A user of EnlistPromotableSinglePhase can promote transactions to a non-MSDTC distributed transaction coordinator [145770, 142891, 142992]
  • System.Transaction allows for snapshot isolation for non-MSDTC promoter types [146607]
  • Sql implementation handles transient faults properly [113390]
  • Windows Forms:
  • CTRL+A works in multiline text boxes [145670]
  • 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]

New in Microsoft .NET Framework 4.6 RC (Apr 30, 2015)

  • ASP.NET 5:
  • .NET Framework 4.6 includes ASP.NET 5, which is a lean .NET platform for building modern cloud-based apps. The platform is modular so you can include only those features that are needed in your application. It can be hosted on IIS or self-hosted in a custom process, and you can run apps with different versions of the .NET Framework on the same server. It includes a new environment configuration system that is designed for cloud deployment.
  • MVC, Web API, and Web Pages are unified into a single framework called MVC 6. You build ASP.NET 5 apps through the new tools in Visual Studio 2015. Your existing applications will work on the new .NET Framework; however to build an app that uses MVC 6 or SignalR 3, you must use the project system in Visual Studio 2015.
  • ASP.NET UPDATES:
  • HTTP/2 Support (Windows 10):
  • HTTP/2 support has been added to ASP.NET in the .NET Framework 4.6. Because networking functionality exists at multiple layers, new features were required in Windows, in IIS, and in ASP.NET to enable HTTP/2. You must be running on Windows 10 to use HTTP/2 with ASP.NET. HTTP/2 has not yet been added to ASP.NET 5.
  • HTTP/2 is a new version of the HTTP protocol that provides much better connection utilization (fewer round-trips between client and server), resulting in lower latency web page loading for users. Web pages (as opposed to services) benefit the most from HTTP/2, since the protocol optimizes for multiple artifacts being requested as part of a single experience.
  • The browser and the web server (IIS on Windows) do all the work. You don't have to do any heavy-lifting for your users.
  • Most of the major browsers support HTTP/2, so it's likely that your users will benefit from HTTP/2 support if your server supports it. Give it a try with the RC update.
  • Support for the Token Binding Protocol:
  • Microsoft and Google have been collaborating on a new approach to authentication, called the Token Binding Protocol. The premise is that authentication tokens (in your browser cache) can be stolen and used by criminals to access otherwise secure resources (e.g. your bank account) without requiring your password or any other privileged knowledge. The new protocol aims to mitigate this problem.
  • The Token Binding Protocol will be implemented in Windows 10 as a browser feature. ASP.NET apps will participate in the protocol, so that authentication tokens are validated to be legitimate. The client and the server implementations establish the end-to-end protection specified by the protocol.
  • BASE CLASS LIBRARY CHANGES:
  • Many new APIs have been added around to .NET Framework 4.6 RC to enable key scenarios. You will notice the following changes and additions:
  • IReadOnlyCollection implementations:
  • Additional collections implement IReadOnlyCollection such as Queue and Stack.
  • SIMD-enabled types:
  • The System.Numerics namespace now includes a number of SIMD-enabled types, such as Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, and Vector4Vector4.
  • Cryptography updates:
  • The System.Security.Cryptography API has been updated to support the Windows CNG cryptography APIs. Until now, the .NET Framework has used an earlier version of the Windows Cryptography APIs as the basis for the System.Security.Cryptography implementation. We have had requests to support the CNG API, since it supports modern cryptography algorithms, which are important for certain categories of apps. In this update, the team has added support to use CNG certificate keys with the RSACng class.
  • This update is the first step toward broader support for the Windows CNG API and for more modern cryptography algorithms generally. This API work is still in progress so expect this to change for RTM.
  • Compatibility switches:
  • The new AppContext class adds a new compatibility feature that enables library writers to provide a uniform opt-out mechanism for new functionality for their users. It establishes a loosely-coupled contract between components in order to communicate an opt-out request. This capability is typically important when a change is made to existing functionality. Conversely, there is already an implicit opt-in for new functionality.
  • With AppContext, libraries define and expose compatibility switches, while code that depends on them can set those switches to affect the library behavior. By default, libraries provide the new functionality, and they only alter it (that is, they provide the previous functionality) if the switch is set.
  • An application (or a library) can declare the value of a switch (which is always a Boolean value) that a dependent library defines. The switch is always implicitly false. Setting the switch to true enables it. Explicitly setting the switch to false provides the new behavior.
  • IMPROVEMENTS TO EVENT TRACING:
  • A .NET Framework 4.6 RC EventSource object can now be constructed directly and you can call one of the Write methods to emit a self-describing event.
  • The library must check if a consumer has declared the value of the switch and then appropriately act on it.
  • It's beneficial to use a consistent format for switches, since they are a formal contract exposed by a library. The following are two obvious formats: Switch.namespace.switchname, Switch.library.switchname
  • .NET Native:
  • Windows apps for Windows 10 that target .NET Core and are written in C# or Visual Basic can take advantage of a new technology that compiles apps to native code rather than IL. They produce apps characterized by faster startup and execution times. For more information, see Compiling Apps with .NET Native. For an overview of .NET Native that examines how it differs from both JIT compilation and NGEN and what that means for your code, see .NET Native and Compilation.
  • Your apps are compiled to native code by default when you compile them with Visual Studio 2015. For more information, see Getting Started with .NET Native.
  • To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API. For more information, see the Debugging (Unmanaged API Reference) topic.
  • Open-source .NET Framework packages:
  • NET Core packages such as the Immutable Collections and SIMD APIs are now available, open source, on GitHub. To access the code, see NetFx on GitHub. For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.
  • Open-source .NET Framework packages:
  • .NET Core packages such as the Immutable Collections and SIMD APIs are now available, open source, on GitHub. To access the code, see NetFx on GitHub. For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.
  • Also includes changes in the previous Preview version.

New in Microsoft .NET Framework 4.6 Preview (Feb 24, 2015)

  • ASP.NET 5:
  • NET Framework 4.6 includes, ASP.NET 5, which is a lean .NET platform for building modern cloud-based apps. The platform is modular so you can include only those features that are needed in your application. It can be hosted on IIS or self-hosted in a custom process, and you can run apps with different versions of the framework on the same server. It includes a new environment configuration system that is designed for cloud deployment.
  • MVC, Web API, and Web Pages are unified into a single framework called MVC 6. You build ASP.NET 5 apps through the new tools in Visual Studio 14. Your existing applications will work on the new .NET framework; however to build an app that uses MVC 6 or SignalR 3, you must use the project system in Visual Studio 14.
  • 64-bit JIT COMPILER FOR MANAGED CODE:
  • The .NET Framework 4.6 features a new version of the 64-bit JIT compiler. This compiler provides significant performance improvements over the existing 64-bit JIT compiler.
  • BASE CLASS LIBRARY CHANGES:
  • Many new APIs have been added around to .NET Framework 4.6 Preview to enable key scenarios. You will notice the following changes and additions:
  • Additional collections implement ReadOnlyCollection such as Queue and Stack.
  • The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. If you assign a new CultureInfo object to these properties, the current thread culture defined by the Thread.CurrentThread.CurrentCulture property and the current UI thread culture defined by the Thread.CurrentThread,CurrentUICulture properties also change.
  • Enhancements to garbage collection (GC):
  • The GC class now includes TryStartNoGCRegion and EndNoGCRegion methods that allow you to disallow garbage collection during the execution of a critical path.
  • A new overload of the GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) method allows you to control whether both the small object heap and the large object heap are swept and compacted or swept only.
  • CHANGES TO THE TASK-BASED ASYNCHRONOUS PATTERN (TAP):
  • For apps the target the .NET Framework 4.6 Preview, Task and Task objects inherit the culture and UI culture of the calling thread. The behavior of apps that target previous versions of the .NET Framework, or that do not target a specific version of the .NET Framework, is unaffected. For more information, see the "Culture and task-based asynchronous operations” section of the CultureInfo class topic.
  • Additional members support the task-based asynchronous pattern (TAP) such as Task.CompletedTask, Task.FromCanceled, Task.FromException, and NamedPipeClientStream.ConnectAsync.
  • IMPROVEMENTS TO EVENT TRACING:
  • A .NET Framework 4.6 Preview EventSource object can now be constructed directly and you can call one of the Write methods to emit a self-describing event.
  • RESIZING IN WINDOWS FORMS CONTROLS:
  • This feature has been expanded in .NET Framework 4.6 Preview to include the DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn and ToolStripSplitButton types and the rectangle specified by the Bounds property used when drawing a UITypeEditor. This is an opt-in feature. To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file.
  • SUPPORT FOR CODE PAGE ENCODINGS:
  • .NET Core primarily supports the Unicode encodings and by default provides limited support for code page encodings. You can add support for code page encodings available in the .NET Framework but unsupported in .NET Core by registering code page encodings with the Encoding.RegisterProvider method. For more information, see CodePagesEncodingProvider.
  • .NET NATIVE:
  • Windows Store apps that target .NET Core and are written in C# can now take advantage of a new technology that compiles apps to native code rather than IL. They produce apps characterized by faster startup and execution times. For more information, see Compiling Apps with .NET Native. For an overview of .NET Native that examines how it differs from both JIT compilation and NGEN and what that means for your code, see .NET Native and Compilation.
  • You can compile your apps to native code by configuring your project in Visual Studio. For more information, see Getting Started with .NET Native.
  • To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API.
  • INCLUDES CHANGES FROM THE PREVIOUS RC VERSION.

New in Microsoft .NET Framework 4.5.3 Preview (Nov 13, 2014)

  • Base class library changes:
  • Many new APIs have been added around the framework to enable key scenarios. You will notice the following changes and additions:
  • Additional collections implement ReadOnlyCollection such as Queue and Stack.
  • Additional members support the task-based asynchronous pattern (TAP) such as Task.CompletedTask and NamedPipeClientStream.ConnectAsync.
  • The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. If you assign a new CultureInfo object to these properties, the current thread culture defined by the Thread.CurrentThread.CurrentCulture property and the current UI thread culture defined by the Thread.CurrentThread,CurrentUICulture properties also change.
  • 64-bit JIT compiler for managed code:
  • This release includes a new version of the 64-bit JIT compiler, which provides significant performance improvements over the existing 64-bit JIT compiler.
  • NET Native:
  • Windows Store apps written in C# that target the .NET Framework can now take advantage of a new technology that compiles apps to native code rather than IL. They produce apps characterized by faster startup and execution times. For more information, see Compiling Apps with .NET Native. For an overview of .NET Native that examines how it differs from both JIT compilation and NGEN and what that means for your code, see .NET Native and Compilation.
  • You can compile your apps to native code by configuring your project in Visual Studio. For more information, see Getting Started with .NET Native.
  • To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API.
  • ASP.NET 5;
  • ASP.NET 5 is a lean .NET platform for building modern cloud-based apps. The platform is modular so you can include only those features that are needed in your application. It can be hosted on IIS or self-hosted in a custom process, and you can run apps with different versions of the framework on the same server. It includes a new environment configuration system that is designed for cloud deployment.
  • MVC, Web API, and Web Pages are unified into a single framework called MVC 6. You build ASP.NET 5 apps through the new tools in Visual Studio 14. Your existing applications will work on the new .NET framework; however to build an app that uses MVC 6 or SignalR 3, you must use the project system in Visual Studio 14.
  • Resizing in Windows Forms controls:
  • This feature has been expanded to include the DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn and ToolStripSplitButton types.
  • This is an opt-in feature. To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file.
  • Support for code page encodings:
  • NET Core primarily supports the Unicode encodings and by default provides limited support for code page encodings. You can add support for code page encodings available in the .NET Framework but unsupported in .NET Core by registering code page encodings with the Encoding.RegisterProvider method.
  • Improvements to event tracing:
  • An EventSource object can now be constructed directly and you can call one of the Write``1 methods to emit a self-describing event.
  • Open-source .NET Framework packages
  • Some great .NET packages such as the Immutable Collections and SIMD APIs are now available, open source, on GitHub.

New in Microsoft .NET Framework 4.5.2 Final (May 7, 2014)

  • ASP.NET improvements:
  • New HostingEnvironment.QueueBackgroundWorkItem method that lets you schedule small background work items. ASP.NET tracks these items and prevents IIS from abruptly terminating the worker process until all background work items have completed. These will enable ASP.NET applications to reliably schedule Async work items.
  • New HttpResponse.AddOnSendingHeaders and HttpResponseBase.AddOnSendingHeaders methods are more reliable and efficient than HttpApplication.PreSendRequestContent and HttpApplication.PreSendRequestHeaders. These APIs let you inspect and modify response headers and status codes as the HTTP response is being flushed to the client application. These reliability improvements minimize deadlocks and crashes between IIS and ASP.NET.
  • New HttpResponse.HeadersWritten and HttpResponseBase.HeadersWritten properties that return Boolean values to indicate whether the response headers have been written. You can use these properties to make sure that calls to APIs such as HttpResponse.StatusCode succeeds. This enables shared hosting scenarios for ASP.NET applications.
  • High DPI Improvements is an opt-in feature to enable resizing according to the system DPI settings for several glyphs or icons for the following Windows Forms controls: DataGridView, ComboBox,
  • ToolStripComboBox, ToolStripMenuItem and Cursor. Here are examples of before and after views once this change is opted into.
  • .NET 4.5.2 Controls with High DPI setting:
  • The red error glyph scales correctly.
  • The drop down arrow in the ToolStripMenu scales correctly
  • Distributed transactions enhancement enables promotion of local transactions to Microsoft Distributed Transaction Coordinator (MSDTC) transactions without the use of another application domain or unmanaged code. This has a significant positive impact on the performance of distributed transactions.
  • More robust profiling with new profiling APIs that require dependent assemblies that are injected by the profiler to be loadable immediately, instead of being loaded after the app is fully initialized. This change does not affect users of the existing ICorProfiler APIs. Before this feature, diagnostics tools that do IL instrumentation via profiling API could cause unhandled exceptions to be thrown, unexpectedly terminating the process.
  • Improved activity tracing support in runtime and framework:
  • The .NET Framework 4.5.2 enables out-of-process, Event Tracing for Windows (ETW)-based activity tracing for a larger surface area. This enables Application Performance Management vendors to provide lightweight tools that accurately track the costs of individual requests and activities that cross threads. These events are raised only when ETW controllers enable them.

New in Microsoft .NET Framework 4.5.1 RC (Sep 10, 2013)

  • This version of the .NET Framework runs side-by-side with the .NET Framework 3.5 SP1 and earlier versions, but performs an in-place update for the .NET Framework 4 and the .NET Framework 4.5. The .NET Framework 4.5.1 is already included in Windows 8.1 and Windows Server 2012 R2.

New in Microsoft .NET Framework 4.5.50709.17929 Final (Aug 16, 2012)

  • .NET for Windows Store apps:
  • Windows Metro style apps are designed for specific form factors and leverage the power of the Windows operating system. A subset of the .NET Framework 4.5 is available for building Metro style apps for Windows by using C# or Visual Basic. This subset is called .NET for Windows Store apps.
  • Portable Class Libraries:
  • The Portable Class Library project in Visual Studio 2012 enables you to write and build managed assemblies that work on multiple .NET Framework platforms. Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET for Windows Store apps) to target. The available types and members in your project are automatically restricted to the common types and members across these platforms.
  • Core New Features and Improvements:
  • The following features and improvements were added to the common language runtime and to .NET Framework classes
  • Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment.
  • Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. This feature can be enabled in the application configuration file. See the element, which also lists other restrictions on object size and array size.
  • Better performance through background garbage collection for servers. When you use server garbage collection in the .NET Framework 4.5, background garbage collection is automatically enabled.
  • Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance.
  • Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out.
  • Ability to define the default culture for an application domain.
  • Console support for Unicode (UTF-16) encoding.
  • Support for versioning of cultural string ordering and comparison data.
  • Better performance when retrieving resources.
  • Zip compression improvements to reduce the size of a compressed file.
  • Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.
  • Support for the 2008 version of the Internationalized Domain Names in Applications (IDNA) standard when the IdnMapping class is used on Windows 8.
  • Delegation of string comparison to the operating system, which implements Unicode 6.0, when the .NET Framework is used on Windows 8. When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x.
  • Ability to compute the hash codes for strings on a per application domain basis.
  • Managed Extensibility Framework (MEF):
  • The Managed Extensibility Framework (MEF) provides the following new features
  • Support for generic types.
  • Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.
  • Multiple scopes.
  • A subset of MEF that you can use when you create Metro style apps. This subset is available as a downloadable package from the NuGet Gallery. To install the package, open your project in Visual Studio 2012, choose Manage NuGet Packages from the Project menu, and search online for the Microsoft.Composition package.
  • Asynchronous File Operations:
  • In the .NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. These features add a task-based model for performing asynchronous operations. To use this new model, use the asynchronous methods in the I/O classes.
  • Tools:
  • Resource File Generator (Resgen.exe) enables you to create a .resw file for use in Windows Metro style apps from a .resources file embedded in a .NET Framework assembly. For more information, see Resgen.exe (Resource File Generator).
  • Parallel Computing:
  • The .NET Framework 4.5 provides several new features and improvements for parallel computing. These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis.
  • Web:
  • ASP.NET 4.5 includes the following new features
  • Support for new HTML5 form types.
  • Support for model binders in Web Forms. These let you bind data controls directly to data-access methods, and automatically convert user input to and from .NET Framework data types.
  • Support for unobtrusive JavaScript in client-side validation scripts.
  • Improved handling of client script through bundling and minification for improved page performance.
  • Integrated encoding routines from the AntiXSS library (previously an external library) to protect from cross-site scripting attacks.
  • Support for WebSockets protocol.
  • Support for reading and writing HTTP requests and responses asynchronously.
  • Support for asynchronous modules and handlers.
  • Support for content distribution network (CDN) fallback in the ScriptManager control.
  • Networking:
  • The .NET Framework 4.5 provides a new programming interface for HTTP applications.
  • Support is also included for a new programming interface for accepting and interacting with a WebSocket connection by using the existing HttpListener and related classes.
  • In addition, the .NET Framework 4.5 includes the following networking improvements
  • RFC-compliant URI support.
  • Support for Internationalized Domain Name (IDN) parsing.
  • Support for Email Address Internationalization (EAI).
  • Improved IPv6 support.
  • Dual-mode socket support.
  • Windows Presentation Foundation (WPF):
  • In the .NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas
  • The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.
  • The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.
  • New features for the VirtualizingPanel and Dispatcher classes.
  • Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
  • Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.
  • Repositioning of data as the values change (live shaping).
  • Ability to check whether the data context for an item container is disconnected.
  • Ability to set the amount of time that should elapse between property changes and data source updates.
  • Improved support for implementing weak event patterns. Also, events can now accept markup extensions.
  • Windows Communication Foundation (WCF):
  • In the .NET Framework 4.5, the following features have been added to make it simpler to write and maintain Windows Communication Foundation (WCF) applications
  • Simplification of generated configuration files.
  • Support for contract-first development.
  • Ability to configure ASP.NET compatibility mode more easily.
  • Changes in default transport property values to reduce the likelihood that you will have to set them.
  • Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.
  • Validation of WCF configuration files by Visual Studio as part of the build process, so you can detect configuration errors before you run your application.
  • New asynchronous streaming support.
  • New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).
  • Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.
  • Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.
  • Support for configuring services in code.
  • XML Editor tooltips.
  • ChannelFactory caching support.
  • Binary encoder compression support.
  • Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. A client sends a message to a service and expects no response from the service.
  • Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.
  • Support for WCF services that use internationalized domain names (IDNs).
  • Windows Workflow Foundation (WF):
  • State machine workflows, which were first introduced as part of the .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). This update included several new classes and activities that enabled developers to create state machine workflows. These classes and activities were updated for the .NET Framework 4.5 to include
  • The ability to set breakpoints on states.
  • The ability to copy and paste transitions in the workflow designer.
  • Designer support for shared trigger transition creation.
  • Activities for creating state machine workflows, including: StateMachine, State, and Transition.
  • Enhanced Workflow Designer features such as the following
  • Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.
  • Ability to automatically create a Sequence activity when a second child activity is added to a container activity, and to include both activities in the Sequence activity.
  • Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.
  • A new Document Outline view that shows the components of a workflow in a tree-style outline view and lets you select a component in the Document Outline view.
  • Ability to add annotations to activities.
  • Ability to define and consume activity delegates by using the workflow designer.
  • Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.
  • Storage of the view state information for a workflow in a single element in the XAML file, so you can easily locate and edit the view state information.
  • A NoPersistScope container activity to prevent child activities from persisting.
  • Support for C# expressions
  • Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.
  • C# workflow projects that were created in Visual Studio 2010 and that have Visual Basic expressions are compatible with C# workflow projects that use C# expressions.
  • Versioning enhancements
  • The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.
  • Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.
  • In Dynamic Update, the ability to modify the definition of a persisted workflow instance.
  • Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

New in Microsoft .NET Framework 4.5.50501.17626 RC (Jun 2, 2012)

  • In the .NET Framework 4.5 RC, the following features have been added to make it simpler to write and maintain Windows Communication Foundation (WCF) applications:
  • Simplification of generated configuration files.
  • Support for contract-first development.
  • Ability to configure ASP.NET compatibility mode more easily.
  • Changes in default transport property values to reduce the likelihood that you will have to set them.
  • Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.
  • Validation of WCF configuration files by Visual Studio as part of the build process, so you can detect configuration errors before you run your application.
  • New asynchronous streaming support.
  • New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).
  • Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.
  • Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.
  • Support for configuring services in code.
  • XML Editor tooltips.
  • ChannelFactory caching support.
  • Binary encoder compression support.
  • Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. A client sends a message to a service and expects no response from the service.
  • Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.
  • Support for WCF services that use internationalized domain names (IDNs).
  • Windows Workflow Foundation (WF):
  • Several new features have been added to Windows Workflow Foundation (WF) in the .NET Framework 4.5 RC. These new features include:
  • Ability to create state machine workflows.
  • Enhanced Workflow Designer features such as the following:
  • Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.
  • Ability to automatically create a Sequence activity when a second child activity is added to a container activity, and to include both activities in the Sequence activity.
  • Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.
  • A new Document Outline view that shows the components of a workflow in a tree-style outline view and lets you select a component in the Document Outline view.
  • Ability to add annotations to activities.
  • Ability to define and consume activity delegates by using the workflow designer.
  • Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.
  • Storage of the view state information for a workflow in a single element in the XAML file, so you can easily locate and edit the view state information.
  • A NoPersistScope container activity to prevent child activities from persisting.
  • Support for C# expressions:
  • Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.
  • C# workflow projects that were created in Visual Studio 2010 and that have Visual Basic expressions are compatible with C# workflow projects that use C# expressions
  • Versioning enhancements:
  • The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.
  • Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.
  • In Dynamic Update, the ability to modify the definition of a persisted workflow instance.
  • Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

New in Microsoft .NET Framework 4.5.50131 Beta (Mar 24, 2012)

  • .NET for Metro style Apps:
  • Windows Metro style apps are designed for specific form factors and leverage the power of the Windows operating system. A subset of the .NET Framework 4.5 Beta is available for building Metro style apps for Windows by using C# or Visual Basic. This subset is called .NET APIs for Metro style apps
  • Portable Class Libraries:
  • The Portable Class Library project in Visual Studio 11 Beta enables you to write and build managed assemblies that work on multiple .NET Framework platforms. Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET for Metro style apps) to target. The available types and members in your project are automatically restricted to the common types and members across these platforms.
  • Core New Features and Improvements:
  • The following features and improvements were added to the common language runtime and to .NET Framework classes
  • Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment.
  • Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. This feature can be enabled in the application configuration file.
  • Better performance through background garbage collection for servers. When you use server garbage collection in the .NET Framework 4.5 Beta, background garbage collection is automatically enabled.
  • Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance.
  • Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out.
  • Ability to define the default culture for an application domain.
  • Console support for Unicode (UTF-16) encoding.
  • Support for versioning of cultural string ordering and comparison data.
  • Better performance when retrieving resources.
  • Zip compression improvements to reduce the size of a compressed file.
  • Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.
  • Support for the 2008 version of the Internationalized Domain Names in Applications (IDNA) standard when the System.Globalization.IdnMapping class is used on Windows 8 Consumer Preview.
  • Delegation of string comparison to the operating system, which implements Unicode 6.0, when the .NET Framework is used on Windows 8 Consumer Preview. When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x.
  • Managed Extensibility Framework (MEF):
  • The Managed Extensibility Framework (MEF) provides the following new features
  • Support for generic types.
  • Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.
  • Multiple scopes.
  • Parallel Computing:
  • The .NET Framework 4.5 Beta provides several new features and improvements for parallel computing. These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis.
  • Web:
  • ASP.NET 4.5 Beta includes the following new features
  • Support for new HTML5 form types.
  • Support for model binders in Web Forms. These let you bind data controls directly to data-access methods, and automatically convert user input to and from .NET Framework data types.
  • Support for unobtrusive JavaScript in client-side validation scripts.
  • Improved handling of client script through bundling and minification for improved page performance.
  • Integrated encoding routines from the AntiXSS library (previously an external library) to protect from cross-site scripting attacks.
  • Support for WebSockets protocol.
  • Support for reading and writing HTTP requests and responses asynchronously.
  • Support for asynchronous modules and handlers.
  • Support for content distribution network (CDN) fallback in the ScriptManager control.
  • Networking:
  • The .NET Framework 4.5 Beta provides a new programming interface for HTTP applications.
  • Support is also included for a new programming interface for accepting and interacting with a WebSocket connection by using the existing HttpListener and related classes.
  • In addition, the .NET Framework 4.5 Beta includes the following networking improvements
  • RFC-compliant URI support.
  • Support for Internationalized Domain Name (IDN) parsing.
  • Support for Email Address Internationalization (EAI).
  • Improved IPv6 support.
  • Dual-mode socket support.
  • Windows Presentation Foundation (WPF):
  • In the .NET Framework 4.5 Beta, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas
  • The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.
  • The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.
  • New features for the VirtualizingPanel and Dispatcher classes.
  • Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
  • Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.
  • Repositioning of data as the values change (live shaping).
  • Ability to check whether the data context for an item container is disconnected.
  • Ability to set the amount of time that should elapse between property changes and data source updates.
  • Improved support for implementing weak event patterns. Also, events can now accept markup extensions.

New in Microsoft .NET Framework 4.0.30319.1 Final (Apr 13, 2010)

  • Improvements in Common Language Runtime (CLR) and Base Class Library (BCL) :
  • Performance improvement including better multicore support, background garbage collection, and profiler attach on server.
  • New memory mapped file and numeric types.
  • Easier debugging including dump debugging, Watson minidumps, mixed mode debugging for 64 bit and code contracts.
  • Innovations in the Visual Basic and C# languages, for example statement lambdas, implicit line continuations, dynamic dispatch, and named/optional parameters.
  • Improvements in Data Access and Modeling
  • The Entity Framework enables developers to program against relational databases using .NET objects and Language Integrated Query (LINQ). It has many new features, including persistence ignorance and POCO support, foreign key associations, lazy loading, test-driven development support, functions in the model, and new LINQ operators. Additional features include better n-tier support with self-tracking entities, customizable code generation using T4 templates, model first development, an improved designer experience, better performance, and pluralization of entity sets.
  • WCF Data Services is a component of the .NET Framework that enables you to create REST-based services and applications that use the Open Data Protocol (OData) to expose and consume data over the Web. WCF Data Services has many new features, including enhanced BLOB support, data binding, row count, feed customization, projections, and request pipeline improvements. Built-in integration with Microsoft Office 2010 now makes it possible to expose Microsoft Office SharePoint Server data as an OData feed and access that data feed by using the WCF Data Services client library.
  • Enhancements to ASP.NET :
  • More control over HTML, element IDs and custom CSS that make it much easier to create standards-compliant and SEO-friendly web forms.
  • New dynamic data features including new query filters, entity templates, richer support for Entity Framework 4, and validation and templating features that can be easily applied to existing web forms.
  • Web forms support for new AJAX library improvements including built-in support for content delivery networks (CDNs).
  • Improvements in Windows Presentation Foundation (WPF) :
  • Added support for Windows 7 multi-touch, ribbon controls, and taskbar extensibility features.
  • Added support for Surface 2.0 SDK.
  • New line-of-business controls including charting control, smart edit, data grid, and others that improve the experience for developers who build data centric applications.
  • Improvements in performance and scalabilit
  • Visual improvements in text clarity, layout pixel snapping, localization, and interoperability.
  • Improvements to Windows Workflow (WF) that enable developers to better host and interact with workflows. These include an improved activity programming model, an improved designer experience, a new flowchart modeling style, an expanded activity palette, workflow-rules integration, and new message correlation features. The .NET Framework 4 also offers significant performance gains for WF-based workflows.
  • Improvements to Windows Communication Foundation (WCF) such as support for WCF Workflow Services enabling workflow programs with messaging activities, correlation support. Additionally, .NET Framework 4 provides new WCF features such as service discovery, routing service, REST support, diagnostics, and performance.
  • Innovative new parallel-programming features such as parallel loop support, Task Parallel Library (TPL), Parallel LINQ (PLINQ), and coordination data structures which let developers harness the power of multi-core processors.