Description of the Security and Quality Rollup for .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, and 4.7.2 for Windows Server 2012 (KB 4459940)

Applies to: .NET Framework 4.7.2.NET Framework 4.7.1.NET Framework 4.7


This update for Windows Server 2012 includes cumulative reliability improvements in .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, and 4.7.2. We recommend that you apply this update as part of your regular maintenance routines. Before you install this update, see the Prerequisites and Restart requirement sections.


  • All updates for .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, and 4.7.2 require that the d3dcompiler_47.dll update is installed. We recommend that you install the included d3dcompiler_47.dll update before you apply this update. For more information about the d3dcompiler_47.dll, see KB 4019990.
  • If you install a language pack after you install this update, you must reinstall this update. Therefore, we recommend that you install any language packs that you need before you install this update. For more information, see Add language packs to Windows.

Quality and reliability improvements


  • Updates Japanese dates that are formatted for the first year in an era and for which the format pattern uses “y?”. The format of the year together with the symbol "?" is supported instead of using year numeral 1. Also, formatting day numbers that include "?" is supported.


  • Fixes an issue in some .NET Framework remoting scenarios in which Transaction.Current resets to null after a remoting call if TransactionScopeAsyncFlowOption.Enabled is used. Sometimes this occurs because the remoting lease lifetime expires while the remoting call is outstanding (before .NET Framework 4.7.2). This also occurs if the remoting call does not leave the caller's application domain (AppDomain) (in .NET Framework 4.7.2).

    For the "lease lifetime expired" issue, a new AppSetting for the configuration file is introduced that enables you to specify the lease lifetime of the object that tracks Transaction.Current in the call context. You should set this lease lifetime value to the number of minutes of the longest expected remoting call.

    The AppSetting should resemble the following:
    <add key="Transactions:ContextKeyRemotingLeaseLifetimeInMinutes" value="5"/>

Note The value specifies the lease lifetime for the object in minutes.


  • Fixes a performance regression issue that occurs when you create WinForms controls. This regression was introduced in .NET Framework 4.0 because calls were made to load the Common Control library (ComCtl32.dll).


  • Fixes a race condition that involves temporary files and some antivirus scanners. This issue causes crashes and errors messages that resemble the following:

    The process cannot access the file temp_file_name.
  • Fixes a crash that is caused by a TaskCanceledException error that can occur during shutdown of some WPF applications. Applications that continue to do work that involve weak event patterns or data binding after Application.Run() returns values are known to be vulnerable to this crash scenario.

1 Common Language Runtime (CLR)
2 Windows Workflow Foundation (WF)
3 Windows Forms (WinForms)
4 Windows Presentation Foundation (WPF)

Additional information about this update

For more information about this update as it relates to Windows Server 2012, see the following article in the Microsoft Knowledge Base:

4467241 November 2018 Security and Quality Rollups for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, and 4.7.2 for Windows Server 2012 (KB 4467241)

4462501 October 2018 Preview of the Quality Rollups for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, and 4.7.2 for Windows Server 2012 (KB 4462501)

How to get this update

Windows Update

This update is available through Windows Update. When you turn on automatic updating, this update will be downloaded and installed automatically. For more information about how to get security updates automatically, see Windows Update: FAQ.

Microsoft Update Catalog

To get the stand-alone package for this update, go to the Microsoft Update Catalog website.

Windows Software Update Services (WSUS)

On your WSUS server, follow these steps:

  1. Select Start, select Administrative Tools, and then select Microsoft Windows Server Update Services 3.0.
  2. Expand ComputerName, and then select Action.
  3. Select Import Updates.
  4. WSUS opens a browser window in which you may be prompted to install an ActiveX control. Install the ActiveX control to continue.
  5. After the ActiveX control is installed, you see the Microsoft Update Catalog screen. Type 4467241 in the Search box, and then select Search.
  6. Locate the .NET Framework packages that match the operating systems, languages, and processors in your environment. Select Add to add them to your basket.
  7. After you select all the packages that you require, select View Basket.
  8. To import the packages to your WSUS server, select Import.
  9. After the packages are imported, select Close to return to WSUS.

The updates are now available for installation through WSUS.


To apply this update, you must have .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, or 4.7.2 installed.

Restart requirement

You must restart the computer after you apply this update if any affected files are being used. We recommend that you exit all .NET Framework-based applications before you apply this update.

Update replacement information

This update replaces previously released update KB 4458612.

File information

The English (United States) version of this update installs files that have the attributes that are listed in the following tables. The dates and times for these files are listed in Coordinated Universal Time (UTC). The dates and times for these files on your local computer are displayed in your local time together with your current daylight saving time (DST) bias. Additionally, the dates and times may change when you perform certain operations on the files.

How to obtain help and support for this update