Exchange 2013 CU16 and Exchange 2016 CU5 .NET Framework Requirement

As mentioned in the release posts for Exchange 2013 CU16 and Exchange 2016 CU5, both of these Exchange versions now require .NET framework 4.6.2 on all supported OS platforms.  This post focusses on Windows 2012 and 2012 R2 installations, see note below about Windows 2016.

Exchange setup will check for the presence of the required .NET framework, if not present setup will halt.

This is also true when extending the AD Schema and preparing Active Directory.  If the machine where you are running the AD preparation commands does not have the required .NET framework, then the installer will log an error.   In the below example a Windows 2012 R2 domain controller, the Schema Master FMSO role holder, was used to initiate the PrepareSchema command.  This failed due to .NET not being updated on that server where the Exchange 2013 CU16 setup command was being executed:

setup.exe /IAcceptExchangeServerLicenseTerms /PrepareSchema

Exchange Setup Halted Due To Unsupported .NET Framework Version

For make benefit, most glorious search engines:

Microsoft Exchange Server 2013 Cumulative Update 16 Unattended Setup

Copying Files…
File copy complete. Setup will now collect additional information needed for installation.

Performing Microsoft Exchange Server Prerequisite Check

    Prerequisite Analysis                                                                                                 FAILED
This computer requires .NET Framework 4.6.2 (
For more information, visit:
The Exchange Server setup operation didn’t complete. More details can be found in ExchangeSetup.log located in the<SystemDrive>:\ExchangeSetupLogs folder.

If setup was launched on a Exchange server which was missing the .NET update, the same error will be logged.  This will be after the additional pre-flight checks are performed.

Exchange Setup Halted Due To Unsupported .NET Framework Version


Verify .NET Framework Version Installed

MSDN documents How to: Determine Which .NET Framework Versions Are Installed.  In the .NET 4.5 and 4.6 versions we can review the Release key in the registry which is located under:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Consult the MSDN reference article for all of the details.  In short, current server versions will typically report the below values.  If you do not have a value of 394806 on a Windows 2012 R2 system then it is time to upgrade .NET.

Release OS .NET Version
394271 Non Server 2016 Systems 4.6.1
394802 Windows Server 2016 4.6.2
394806 Non Server 2016 Systems 4.6.2

We can check this quickly using PowerShell:

Get-ItemProperty -Path “HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full” | Format-List Release


Verify .NET Framework Installed Using PowerShell

However, before upgrading .NET please review the next section.

Upgrading to Exchange 2013 CU16 or Exchange 2016 CU5

Since .NET 4.62 framework support was first added in Exchange 2013 CU15 and Exchange 2016 CU4 (for Windows Server 2012 and 2012 R2) this adds an upgrade step.  Framework 4.6.2 is not supported on earlier versions of Exchange when installed on Windows 2012 and Windows 2012 R2.  Exchange 2016 CU3 when installed onto Windows Server 2016 required .NET 4.6.2 though at the time of writing most customers are not in this position.

This means that you must consider the currently installed CU and also the currently installed .NET framework when planning this upgrade.

Ideally Exchange 2013 servers will already be on CU15, and Exchange 2016 servers will already be on CU4.  If this is the case then .NET can be upgraded prior to installing Exchange 2013 CU16 and Exchange 2016 CU5.  However if this is not the case then you cannot upgrade directly to the latest CU, you must:

  • Upgrade to Exchange 2013 CU15 or Exchange 2016 CU4
  • Only then perform the .NET upgrade to 4.6.2
  • Then upgrade to Exchange 2013 CU16 or Exchange 2016 CU5


Note: If upgrading to a newer CU, doing .NET upgrade and then to a later CU be sure to allow time for the .NET optimisation process to complete after .NET upgrade.  The .NET upgrade requires a reboot, and after the OS has restarted Exchange setup cannot start until the .NET optimisation process has completed.  This may take 30 minutes – see comments about running ngen.exe to speed this process up

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1  ngen.exe executeQueuedItems


Please plan accordingly to ensure that .NET and Exchange are updated correctly in the right order.  You may also need to update additional machines if you require that separate teams must execute the AD and domain preparation steps.  This is common in larger customers, since the Exchange administrators will not have Enterprise Admin or Schema Admin rights in AD.

After updating .NET to 4.6.2 on the Schema Master, the Active Directory and domains can now be prepared.

After Updating .NET Framework to 4.6.2 Exchange Setup Completed



Comments (24)

  1. Vyacheslav says:

    Add .net setup in Exchange CU and install it prior CU? Nah… Lets make double upgrade!

    1. You can install It prior if the machine was already fully updated to CU15 Vyacheslav.

      If not, then it is a two step process.


  2. ac513 says:

    To clarify about the schema preparation steps– .NET 4.6.2 must only be installed on the machine you’re extending the schema from? Or does .NET 4.6.2 need to be installed on all domain controllers?

    1. On the machine used to prepare AD and domain(s). To illustrate the point that setup will check for the right .NET framework version.


  3. turbomcp says:

    Thanks a lot for that info

  4. Rajesh Varghese says:

    I am struck up in my exchange installation. I have a exchange server 2013 with a single server setup (Windows 2012). I installed .net 4.6.2 and then ran CU16 setup. All went fine, but stage 9 generated some strange error and setup quit. I restarted the setup and after few times, the installation completed. But now exchange web services stopped now. I can’t open ECP or OWA. Connection over NTLM works fine, but nothing else. .net 4.6.2 is not visible in IIS application pools.

    Can anybody help me to fix this up please?

    1. Rajesh – what CU was installed before you started the CU16 upgrade?

      And look for errors in the C:\ ExchangeSetupLogs Directory


  5. RKast says:

    You mention we need to wait for .net optimalisation 30-60 min. This can be speed up with running C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1
    ngen.exe executeQueuedItems

    1. Have you benchmarked the difference in time taken when running that, curious as to the delta.

      On the systems I was looking at this week, the mscorsvw.exe processes were executing and using 6% of CPU. The VM had 64GB RAM, two sockets each of which had 8 cores.
      That took 20-25 mins, so we called it lunchtime!


      1. Rkast says:

        No did not benchmark. But it was done pretty quick not even close to 20 min 🙂 But indeed good excuse for smoke/drink/lunch pause at customer 🙂

        1. I added a reference to this above – thanks for commenting.

          The other customers I’ve been working with were already on the CU updates that supported .NET 4.6.2 so they never experienced this. As .NET was updated weeks ago, so they were prepared for when the requirement changed. This customer had to do the CU15, .NET and CU16 all in the same go. Hence it was more noticeable.


          1. Jakub says:

            You don’t need wait so long time. This Framework installs about 2-5 minutes. You need only before You will start install framework stopping all exchange services and some time “Distributed Transaction Coordinator”.

      2. When it comes to .NET optimization performance there is always the “it depends” rule. Escpecially, when running in a virtualized infrastructure. I like the fact that the wait time is mentioned, as this is not always the case in other posts.

        1. Exactly Thomas!

          A single post will never cover all eventualities, so it is up to the consultant to implement what is best for a given environment.

          In this case we decided that the most prudent option was Get-Lunch.


  6. Arend van dijk says:

    Great blog, thnx Rhoderick!

  7. Hello Rhoderick ,

    Thank you and it is really informative .

    I just wanted to clarify one of my question .I could see that Exchange 2013 CU16 has given the fix for the issue which is described in the knowledge base (KB4013606)

    In my environment i have below mentioned issue which is described on this forum , Will this be rectified if i upgrade my exchange 2013 CU15 to CU16.

    Forum Link :

    Problem Description : In short i could explain you that in one of my exchange server noderunner.exe is utilizing maximum CPU when i activate/mount anyone of the mailbox database copy in that server.You can get more details about the issue on the forum link.

    1. Hi Nithyanandham – that KB refers to a different issue.

      I would still move the server forward, as that will be one the first things that support will question you on.


  8. JohnnyM2000 says:

    Great article, thanks Rhoderick.
    Quick question about the upgrade process of the .NET Framework to 4.6.2:
    If currently .NET 4.5.2 is installed under Exchange 2013 CU15, should I use any .NET 4.6.2 installer (Web- or Offline) to upgrade or is there a different/better way?



    1. I personally prefer the offline installer. It is a one time download, and done.


  9. Andreas S says:

    I had strange issues when upgrading to CU16 on a Windows Server 2012 that has been running RTM before.
    It’s working fine now as i managed to fix it but i wanted to ask if maybe someone has had similar issues.
    First thing i noticed is that the Hub Transport is back in the connectors when it definitely wasn’t there before.
    Then what happened (very awkward) was that suddenly mails didn’t get delivered anymore AT ALL. Gladly it was on a downtime allowed weekend as it took me a while to figure out that an Exchange service (the german name is Transportzustellungsdienst or similar, transport delivery?) was suddenly running as the user NT-AUTHORITY\SYSTEM, when none of the other services were running under that user so it really stuck out in the Services console. I changed that back to the proper user and mails started flowing in again.
    Anyway, i just wanted to share that experience and maybe someone has had a similar issue or an idea how this could have happened.
    Best Regards,

  10. Michael says:

    Wow, I sure am lucky then. The night before I read this article, I upgraded two servers (one on CU10, one on CU11) to CU16 and just threw on .NET 4.6.2 right before. I rebooted then went right into the CU installation and it all completed without a hitch (and users ran fine today). So it is probably not a good idea, but it also just might work…

  11. x says:

    What is the purpose of a Cumulative Update that isn’t?

    Also install .net and wait 30 minutes? Really?

    Always messing up one way or another.

  12. David-Mac says:

    If upgrading a server farm do I need to upgrade all servers to CU4, then to CU5? I just need to be sure mailbox moves and such related to putting a node in maintenance mode will work between servers with running CU2 and CU5?

  13. Marcel says:

    Hi Rhoderick,
    Excellent article.

    On the TechNet Website its says:
    “If you’re upgrading to Exchange 2013 CU13, CU14, or CU15 from Exchange 2013 CU12 or earlier, we strongly recommend that you install Exchange 2013 CU13 before .NET Framework 4.6.1 and its related post-release fixes.”

    So a customer on CU11 should upgrade to CU13 ->.NET 4.6.1 -> CU15 ->.NET 4.6.2 ->CU16
    According to Microsoft

Skip to main content