Last week I had to upgrade a few Exchange 2013 CU15 servers to Exchange 2013 CU18. In a typical scenario upgrading to a newer Cumulative Update it’s not a big deal, not even when skipping a few versions, but in this scenario most likely you will hit the following error message:
It fails during the Prerequisite Analysis with the error message
“This computer requires .NET Framework 4.6.2 (https://support.microsoft.com/kb/3151802). For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.MinimumFrameworkNotInstalled.aspx
The Exchange Server setup operation didn’t complete. More details can be found in ExchangeSetup.log located in the (SystemDrive):\ExchangeSetupLogs folder.”
Exchange Server 2013 CU18 requires the .NET Framework 4.6.2 for installation which was obviously not installed on these servers.
How do you determine the installed version of the .NET Framework? Unfortunately (again this word ☹) this is not visible in Control Panel and you have to check the registry for this.
Navigate to HKLM\SOFTWARE\Microsoft\NET Framework setup\NDP\Full and check the DWORD value Release:
In my server the value was 379893, which means .NET Framework 4.5.2 was installed.
The following is a list of DWORD values for the various .NET Framework versions:
- 378389 – .NET Framework 4.5
- 378675 – .NET Framework 4.5.1 on Windows 2012 R2
- 379893 – .NET Framework 4.5.2
- 393297 – .NET Framework 4.6
- 394271 – .NET Framework 4.6.1
- 394806 – .NET Framework 4.6.2
- 460805 – .NET Framework 4.7
- 461310 – .NET Framework 4.7.1
Note. If the Full subkey is not available the .NET Framework 4.5 or above is not installed on your server.
It is also possible to retrieve this information using PowerShell:
Get-ChildItem "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" | Get-ItemProperty
So, which version of .NET Framework are supported with which version of Exchange server. You can find this is the Exchange server Supportability Matrix:
Obviously, the .NET Framework versions and Exchange server versions is a difficult situation. It is a Microsoft problem, but the Exchange application is just using the .NET Framework, just as it is using Windows server and as such relies on supportability from the .NET development team or the Windows development team. This is becoming increasingly annoying with the rapid pace of releasing .NET versions.
But in our scenario, the Exchange 2013 CU15 servers was upgraded from CU12 last year, and was still using the .NET Framework version 4.5.2. My advantage was that Exchange 2013 CU15 also supports .NET Framework 4.6.2 so my upgrade path was easy.
- Install the .NET Framework 4.6.2 on Exchange 2013 CU15.
- Upgrade to Exchange 2013 CU18.
- Everybody happy.
In the same week another customer reached out to me, and he was still running Exchange 2013 CU12 and wanted to upgrade to Exchange 2013 CU18 and this is becoming more annoying.
When upgrading from CU12 (or older) the following steps are required:
- Upgrade from Exchange 2013 CU12 to CU15
- Install the .NET Framework 4.6.2 on the CU15 servers
- Upgrade from Exchange 2013 CU15 to CU18
- Everybody happen (except Exchange admins)
Currently (December 2017) the .NET Framework 4.7.1 is also available, but this isn’t supported by any version of Exchange server. Most likely it will be supported by Exchange Server 2013 CU19 and Exchange Server 2016 CU8. When it becomes available I will update this blog post.
More information can be found on the following Microsoft sites:
- Exchange 2016 system requirements – https://technet.microsoft.com/en-us/library/aa996719(v=exchg.160).aspx
- Exchange 2013 system requirements – https://technet.microsoft.com/en-us/library/aa996719(v=exchg.150).aspx
- .NET Framework 4.7 and Exchange Server – https://blogs.technet.microsoft.com/exchange/2017/06/13/net-framework-4-7-and-exchange-server/
- How to: Determine Which .NET Framework Versions Are Installed – https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed