Visual Studio 2010 .net 3.5 и ниже испортил на Windows 7 - PullRequest
1 голос
/ 25 октября 2011

В ходе некоторого устранения неполадок на прошлой неделе я удалил .net 3.5, думая, что могу переустановить, и сделал это (попробовал по крайней мере), но теперь я не могу создать что-то, ориентированное на 3.5, я пытаюсь переустановить 3.5но он все время говорит мне, что я должен сделать это в функциях Windows, поэтому я попытался проверить и отменить проверку.Любая помощь будет отличной.

Редактировать: Я, вероятно, должен добавить, что я использовал программу удаления Revo и полностью сдул 3.5.enter image description here

enter image description here enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Вы нарушили .NET Framework. Поздравляю, там это не весело. Если у вас есть Google, вы наверняка нашли

Там упоминается, что .Net Framework в Vista + является частью ОС, которую вы не можете переустановить как обычно. Упомянутый трюк для звонка

  • sfc.exe / scannow

не помогает, поскольку восстанавливает только недостающие файлы в расположениях под управлением MSI и Trusted Installer.

После долгих поисков в моей файловой системе я наконец нашел свои сборки в неожиданном месте. Все они устанавливаются во второй раз в C: \ Windows \ WinSxS ..., который обычно используется только для неуправляемых параллельных библиотек, таких как C-Runtime или любой другой библиотеки DLL. Я не знаю, как они его установили, но обычные установки MSI, которые устанавливаются в GAC, не устанавливают управляемые сборки во второй раз в папку WinSxS.

С другой стороны, это звучит разумно, поскольку MSI и установщики заботятся только о файлах в системе WinSxS32 и других специально защищенных папках. 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, но это не так. Если вы попытаетесь упаковать их, вы обнаружите, что установка больше не работает. Было бы очень интересно получить больше информации на эту темную тему.

0 голосов
/ 26 октября 2011

Я закончил получать образ своей машины заново, так как я думаю, что, когда я удалил .net 3.5 с помощью revo-деинсталлятора и полностью уничтожил все обычное и существующее, я поставил свой ноутбук в очень сложное для ремонта состояние. Я отказался и пошел по пути переизображения, так как, согласно этой статье, это, кажется, лучший способ исправить реестр.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...