簡體   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