Вы нарушили .NET Framework. Поздравляю, там это не весело. Если у вас есть Google, вы наверняка нашли
Там упоминается, что .Net Framework в Vista + является частью ОС, которую вы не можете переустановить как обычно. Упомянутый трюк для звонка
не помогает, поскольку восстанавливает только недостающие файлы в расположениях под управлением 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, но это не так. Если вы попытаетесь упаковать их, вы обнаружите, что установка больше не работает. Было бы очень интересно получить больше информации на эту темную тему.