如何在Windows Server 2012 R2上安装.NET Framework 3.5

时间:2020-01-09 10:46:34  来源:igfitidea点击:

大多数现代Windows应用程序都需要.NET Framework才能正常工作。角色和功能设置向导Windows Server 2012 R2中的服务器管理器允许同时安装两个不同版本的.NET Framework 3.5和4.5. .NET Framework 4.5的安装通常不会引起任何问题,这非常简单,但是,我们不能对.NET Framework 3.5的安装一模一样。

实际上,当尝试使用标准设置在Windows Server 2012 R2中安装.NET Framework 3.5时,会出现以下错误消息:多个角色,角色服务或者功能之一的安装失败。找不到源文件。

此行为背后的原因是,.NET Framework 3.5二进制文件不是安装操作系统时保存在服务器系统磁盘上的二进制文件的本地缓存的一部分。这是在Windows Server 2012中的"按需提供功能"的概念下完成的,以减少OS为其自身需求所占用的磁盘空间量。

使用Powershell命令检查.NET Framework 3.5是否在本地存储库中:

Get-WindowsFeature *Framework*

如我们所见,所需的组件已删除(安装状态:已删除)。

默认情况下,当通过服务器管理器安装NET Framework 3.5时,系统尝试通过Internet(而不是从本地WSUS服务器)从Windows Update网站获取必需的文件,并且如果服务器没有Internet访问,则安装失败。用户需要指定OS发行版的路径,可以从中安装缺少的组件。

若要手动安装.NET Framework 3.5,请单击"指定备用源路径"以输入包含Windows Server 2012 R2安装盘的文件夹的备用路径。

提示。安装磁盘必须包含已安装的相同版本的OS(相同的版本,语言和更新很重要)。如果安装程序在指定的文件夹中找不到所需的文件,请参见下面的解决方案。

作为路径,我们可以指定本地文件夹(在我们的示例中为D:\source\sxs,其中D:\是具有Windows Server发行版的本地DVD驱动器的盘符)或者网络文件夹。

通过单击"确定",系统将找到.NET Framework 3.5二进制文件并安装该组件。

通过以管理员身份运行以下命令,可以从命令提示符处执行相同的操作:

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

/ Online表示我们需要升级当前的操作系统,而不是wim镜像

/ enable-feature/featurename:NetFX3/all表示必须安装具有所有功能的.NET Framework 3.5

/ Source是Windows分发目录的路径,其中包含必要的组件

/ LimitAccess阻止访问Windows Update

在PowerShell中安装.Net 3.5的相同操作如下所示:

Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs

可以使用以下方法在系统中定期设置原始Windows发行版的路径:

  • 位于HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Serviceicing分支中的注册表参数RepairContentServerSource
  • 或者组策略指定用于可选组件安装和组件修复的设置(该策略会在注册表中更改此设置)

笔记。组策略指定可选组件安装和组件修复的设置位于以下GPO部分:"计算机配置"->"管理模板"->"系统"。应该启用该策略,并指定具有OS分发目录的路径(备用源文件路径)。为防止服务器尝试在线更新,请选中"从不尝试从Windows Update下载有效负载"框。

要验证是否已安装.NET Framework 3.5,请转到" C:\Windows\Microsoft.NET\Framework64"目录,并确保显示" v3.5"文件夹。

如果上述.NET Framework 3.5.1安装方法对我们没有帮助,请尝试以下解决方案。

安装某些更新后,系统中Windows Server 2012 R2的版本(内部版本)可能不再与存储在分发镜像中的OS镜像相对应。在这种情况下,安装程序在比较Windows内核的版本时会拒绝安装组件的不建议使用的版本。在这种情况下,通常,当我们通过dism安装.NET Framework时,会发生以下错误:'0x800f081f。找不到源文件

要解决此问题,请尝试通过Microsoft服务器在线安装.Net:

  • 将当前的Windows Update设置保存到reg文件(项HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate)
  • 删除此项并重新启动WU服务:
net stop wuauserv & net start wuauserv
  • 运行.Net5联机安装:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  • 安装完成后,通过导入reg文件返回WU设置,然后再次重新启动WindowsUpdate服务

提示。将来,我们可以从该服务器使用文件夹C:\Windows\winsxs在其他具有相同操作系统版本的服务器上安装.Net FrameWork 3.5. 将C:\Windows\winsxs文件夹复制到C:\tmp\winsxs目录中的所需服务器,然后使用以下命令安装组件:

dism /online /enable-feature /featurename:NetFX3 /all /Source:C:\tmp\winsxs /LimitAccess

另外,如果在服务器上安装了语言包,则在安装.NET Framework 3.5.1之前,必须使用" lpksetup"命令将其卸载。

还要检查已安装系统更新列表中是否已安装NET 3.5 Framework补丁(理论上,如果未安装NetFX3组件,则不应安装它们)。

卸载此更新,然后在重新启动后尝试安装.NET 3.5.