背景
现在要实验强化学习算法的效果, 需要很老的一个基于Unity的项目作为环境, 从版本库种好容易找到了这个项目, 使用新版本的Unity无法正常打开只能安装较旧版本的Unity Editor, 但是我的系统盘空间不足了, 使用大文件查找找到了一堆看似无用的大文件夹,然后无情删除。成功安装了旧版本的编辑器。
然后问题就来了, IDE里面代码整片整片的爆红, 编译不过, 看提示是需要 dotNetFrameWork 3.5。 正常来说,这个运行时是在Windows10安装时自带的, 可能被我一顿操作删除没了。
遇到问题的过程
既然说缺少了dotNetFrameWork特定版本, 那就去下载安装, 微软提供了一个官方的地址,其中列举了各个版本的dotNetFrameWork
1 |
|
按照提示下载了对应的在线安装器。
安装过程需要下载 1.0和2.0 版本, 反正也只能点同意, 但是还是出问题了, 无法安装,错误码是 0x80240234 很奇怪的一个错误码,官方并没有说明这个错误码是什么含义。
解决的过程
既然需要安装 .Net 那么目标很明确,也就不解决这是什么错误了,就是想办法安装上就是了。
独立的安装器既然都无法安装,那么也对Windows自身的安装不抱幻想,不过总归还是要试一试。
0. 尝试 重新安装Visual Studio
在Visual Studio的功能模块列表中有一项是 .NetFrameWork3.5 SDK 的项目, 我认为如果缺失了.NetFrameWork3.5, 那么在安装VisualStudio的过程中,这个可以被安装上, 可是我的机器已经有一个VisualStudio的版本了, 于是面临卸载重装。
卸载很快就完成了,但是新安装是个非常耗时的过程,在等待下载的过程中,先尝试其他方法解决。幸而其他方法生效了, 此方案没有用上,最终也不知道是不是有效。
1. 尝试 启用或关闭Windows功能
通过控制面板 -> 程序和功能 -> 启用或关闭Windows功能 打开Windows功能编辑页面。 果然
.Net3.5显示未勾选状态了。直接勾选上,点击确定... 果然还是一样的报错,无法完成。
2. 尝试 清空SoftwareDistribution 目录后更新
我发现SoftwareDistribution目录一共存在两个位置, 一个是C:\ProgramData\SoftwareDistribution
另一个是C:\Windows\SoftwareDistribution
都把它们清空,然后重新开启功能, 失败。 使用独立安装器, 依然失败。
3. 使用 Windows 安装媒体
这个方法成功了。
- 准备安装文件。 就是安装Windows时使用的光盘镜像文件(.iso)。
- 解压安装文件的 source/sxs 目录到指定位置。 windows10的文件管理器可以直接挂载iso作为虚拟驱动器,无需额外的压缩工具,就是一个简单的复制过程。
- 使用管理员权限打开命令提示符窗口,输入
Dism /online /enable-feature /featurename:NetFx3 /All /Source:${sxs目录绝对路径} /LimitAccess
等待结束,这次成功了。
总结
虽然本文篇幅较小,但是其中耗费的时间和耽误的功夫着实不小。Windows缺失组件的问题本来就是相当棘手的问题, 再在Windows官网上寻找方案, 下载必要的工具,依次去尝试,中间由于工具提示数次重启机器,耗时半天。 幸好,最终总算是解决了, 在此做个记录,以后再遇到这个问题直接使用最明确的方案来解决。