繁体   English   中英

Visual Studio 2010 .net 3.5及更低版本在Windows 7上搞砸了

[英]Visual Studio 2010 .net 3.5 and lower messed up on windows 7

在上周的一些故障排除过程中,我卸载了.net 3.5,以为我可以重新安装,并且这样做(尝试了至少),但是现在我似乎无法针对3.5进行构建,我尝试重新安装3.5,但它仍然告诉我我必须在Windows功能中执行此操作,因此我尝试检查并取消选中该功能。 任何帮助都会很棒。

编辑:我应该补充一点,我使用了revo uninstaller并完全吹走了3.5。 在此输入图像描述

在此输入图像描述在此输入图像描述

在此输入图像描述

在此输入图像描述

您已经破坏了.NET Framework。 恭喜你一直没有乐趣。 如果你有Google搜索,你肯定找到了

在那里提到Vista +上的.Net Framework是操作系统的一部分,你不能像往常一样重新安装它。 提到的伎俩

  • sfc.exe / scannow

没有帮助,因为它只修复MSI和Trusted Installer控件下的位置中丢失的文件。

在我的文件系统上进行了大量搜索之后,我终于在意想不到的地方找到了程序集。 它们都第二次安装到C:\\ Windows \\ WinSxS ...中,通常只用于非托管的并排dll,例如C运行时或任何其他dll。 我不知道他们是如何安装它的,但安装到GAC中的正常MSI安装不会再次将托管程序集安装到WinSxS文件夹中。

再想一想,这听起来很合理,因为MSI和安装程序只关心WinSxS system32和其他受特殊保护的文件夹中的文件。 GAC没有以这种方式受到保护,这意味着通常的修复机制不起作用。

我摆脱这种混乱的方法是使用gacutil将所有内容再次安装到GAC中,这些内容可以从WinSxS程序集中安装。 使用以下命令,我获得了成功:

 1. C:\Windows\winsxs>for /D %i in (*_System.*) do for %j in (%i\*.dll)
    do echo %~fj >> %TEMP%\assemblies.txt 
 2. C:\Windows\winsxs>for /D %i in (*_microsoft.*) do for %j in (%i\*.dll) do echo %~fj >> %TEMP%\assemblies.txt
 3. for /F %i in (%TEMP%\assemblies.txt) do gacutil /i %i

我没有找到任何解释为什么.NET程序集第二次安装在WinSxS文件夹中。 MSI确实以相同的方式处理托管和非托管程序集,但是对于普通的安装程序,我没有得到这种行为。 我知道MS在Windows组件中使用的技术类似于MSI,但底层引擎却截然不同。

当您获得操作系统补丁时,它们看起来像普通的msi文件,但不是。 如果尝试重新打包它们,您将发现安装不再起作用。 获取有关此黑暗主题的更多信息将非常有趣。

我最终让我的机器重新成像了,因为当我用revo卸载程序卸载.net 3.5并彻底清除了reg和现有的内容时,我将笔记本电脑置于一个非常难以修复的状态。 我已经放弃了重新映像路线,因为根据本文,这似乎是修复注册表的最佳方法。

http://blogs.msdn.com/b/astebner/archive/2007/03/26/how-to-repair-the-net-framework-2-0-and-3-0-on-windows-vista。 ASPX

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM