Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio2010.NET3.5及更低版本在Windows7上出现问题_C#_Visual Studio 2010_.net 3.5_Msbuild - Fatal编程技术网

C# VisualStudio2010.NET3.5及更低版本在Windows7上出现问题

C# VisualStudio2010.NET3.5及更低版本在Windows7上出现问题,c#,visual-studio-2010,.net-3.5,msbuild,C#,Visual Studio 2010,.net 3.5,Msbuild,在上周的一些故障排除过程中,我卸载了.net 3.5,认为我可以重新安装,并这样做了(至少尝试了),但现在我似乎无法构建任何针对3.5的目标,我尝试重新安装3.5,但它一直告诉我必须在windows功能中执行,所以我尝试检查和取消检查。任何帮助都会很好 编辑:我可能应该补充一点,我使用了revo卸载程序,完全摆脱了3.5版。 您已经破坏了.NET Framework。恭喜你来了,这一点都不好玩。如果你在谷歌上搜索过,你肯定找到了 这里提到Vista+上的.Net Framework

在上周的一些故障排除过程中,我卸载了.net 3.5,认为我可以重新安装,并这样做了(至少尝试了),但现在我似乎无法构建任何针对3.5的目标,我尝试重新安装3.5,但它一直告诉我必须在windows功能中执行,所以我尝试检查和取消检查。任何帮助都会很好

编辑:我可能应该补充一点,我使用了revo卸载程序,完全摆脱了3.5版。


您已经破坏了.NET Framework。恭喜你来了,这一点都不好玩。如果你在谷歌上搜索过,你肯定找到了

这里提到Vista+上的.Net Framework是操作系统的一部分,您不能像往常一样重新安装它。上面提到的打电话的诀窍

  • sfc.exe/scannow
没有帮助,因为它只修复MSI和受信任安装程序控制的位置中丢失的文件

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

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

我摆脱这一困境的方法是使用gacutil简单地将所有东西重新安装到GAC中,而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对待托管程序集和非托管程序集的方式几乎相同,但对于普通安装程序,我没有这种行为。我知道微软在Windows组件上使用了一种类似于MSI的技术,但底层引擎却大不相同


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

我最终让我的机器重新成像,我想,当我用revo卸载程序卸载.net 3.5并完全取消了注册和现有功能时,我让我的笔记本电脑处于一种很难修复的状态。我已经放弃了重新映像的路线,正如本文所述,这似乎是修复注册表的最佳方式


这会转储很多消息,但似乎仍然无法修复。Visual Studio不使用来自GAC的引用,而是使用来自引用程序集文件夹的引用。您需要填充此文件夹,才能使其再次工作。它们存储在注册表项中:我怀疑您丢失了那里的文件。看来我没有安装gacutil,现在我可以安装.net 2.0 sdk,以使gac utilGacutil与VS2010一起安装。查看添加/删除程序,右键单击“Microsoft Visual Studio 2010”和“Microsoft Windows SDK for Windows 7”。在那里,您可以选择更改并按照菜单进行操作,直到可以修复安装。这应该会使gacutil和所有其他工具恢复正常。您确实在卸载.net 3.5后重新启动了计算机,对吗?否则,您无论如何都无法重新安装。是的,我可能重新启动的次数超过了今天的计数次数。我尝试重新启动、重新启用、重新安装VS2008、VS2010、sfc,但似乎没有任何效果。