
Я использую Visual Studio 2012 Professional, обновленную до SP5 под Windows 7 SP1 с последними обновлениями. Мне была нужна Visual Studio 2015 некоторое время, я установил ее, а затем удалил ее стандартным деинсталлятором.
Но сегодня мне нужно было собрать Webkit для Windows, и его скрипт сборки запустился vswhere.exe
и обнаружил некоторые части из Visual Studio 2015 как «рабочую» установку, поэтому мне потребовалась «полная» деинсталляция для VS2015, которую я нашел здесь:https://github.com/Microsoft/VisualStudioUninstaller. Я запустил его один раз, и VS2015 исчез из vswhere.exe
вывода.
Но теперь у меня возникла проблема: каждое приложение, которое я пытаюсь скомпилировать с помощью VS2012, выдает ошибку «cl.exe аварийно завершен с кодом -1073741701».
Я пытался :
- Несколько раз переустанавливал VS2012 с пакетом обновления 5 (SP5) и без него, включая чистую переустановку (удаление основного пакета, удаление зависимостей, повторная установка), ошибка все та же.
- Попытался восстановить VS2012.
- Я попробовал запустить
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe
, пишет «mspdb110.dll не найден». - Я скопировал
Msobj110.dll
,Mspdb110.dll
,Mspdbcore.dll
иMspdbsrv.exe
изC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
и добавил в PATHC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
. Все еще та же ошибка.
Если я переключаю платформу проекта на x64, он компилируется и запускается без проблем. Только компилятор x86 не может запуститься и выдает ошибку выше. Иногда в VS2012 появляется всплывающее окно с сообщением о том, что "cl.exe не может выполнить код 0xc000007b".
Если я запускаю
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat x86
, я могу запускать cl.exe
и даже компилировать работающие 32-разрядные приложения, но внутри Visual Studio 2012 IDE они каждый раз не запускаются cl.exe
, что бы я ни делал.
Пожалуйста, помогите мне это исправить.
Я думаю, что это как-то связано с .NET Framework (у меня установлены 4.5, 4.6 и 4.7) в MSBuild
папке. Может быть, мне нужно как-то переустановить .NET Framework SDK? Если возможно, я хочу избежать переустановки ОС.
EDIT: Запустил баунти. Все еще та же проблема.
Я попробовал вставить запуск cl.exe
без параметров в скрипт "Run before build...", и он запускается оттуда! Но после этого IDE запускается cl.exe
из среды .NET и выдает:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(347,5): ошибка MSB6006: "CL.exe" завершен, код ошибки -1073741701
Если я выбираю платформу x64, cl.exe
то работает везде отлично. Если я запускаю vcvarsall.bat x86
, то могу запустить cl.exe
и скомпилировать.
Единственное, что мне нужно исправить, это некоторый путь в среде, который используется для сборки Win32 x86 из Visual Studio 2012 IDE. Я могу переустановить .NET Framework или Visual Studio (пробовал, но все равно) или изменить некоторые конфигурации MSBuild. Пожалуйста, скажите мне, где можно исправить. Единственное, что я не могу сделать, это переустановить ОС, так как у меня много программного обеспечения, и переустановка займет МНОГО времени.
ОБНОВЛЕНИЕ: Попытался удалить все, включая .NET Framework 4.5, 4.6, 4.7 и Microsoft SQL Server 2008, 2012. Затем установил Visual Studio 2012 Professional RTM. После установки при первом запуске я открыл тестовое приложение и получил ту же ошибку, что и выше... Версия x64 работает. То же самое после установки SP5.
ОБНОВЛЕНИЕ 2: Пытался перенести файлы Visual Studio 2012 и Windows SDK и msbuild из работающей установки виртуальной машины Windows 7 SP1. Это не исправляет ошибку, та же проблема. Также пытался заменить cl.exe на фиктивное 32-битное приложение, все равно вызывает 0xc000007b каждый раз, когда я запускаю сборку из IDE. Похоже, что при запуске из IDE Visual Studio использует cl.exe 32-бит с какой-то 64-битной DLL. Но я не знаю, как это найти и как исправить.
решение1
Риск удаления одной версии Visual Studio, когда установлено несколько, заключается в удалении слишком многого. Версии Visual Studio можно устанавливать параллельно, но они могут использовать общие компоненты.
Похоже, что это то, что произошло с вами, и ваши попытки исправить это путем копирования DLL и изменения PATH только добавили путаницы. В настоящее время я считаю, что ваш PATH и другие переменные среды вызывают путаницу 32-битных и 64-битных DLL, если только вы не запустите vcvarsall.bat
их для сброса.
Я не думаю, что мне следует предлагать больше идей по дальнейшему исправлению ситуации, поскольку это может только усугубить проблему и оставить скрытые бомбы замедленного действия на будущее.
Это самый близкий способ выполнить чистую установку Visual Studio и .Net, который я могу придумать:
- Полное удаление Visual Studio 2012 Professional с помощью Бесплатная программа Revo Uninstaller
- Удалите все версии .Net, которые вы можете удалить из Панели управления > Программы и компоненты, а также из Включения или отключения компонентов Windows.
- Очистите все папки и реестр вручную или с помощью очистителя, например CCleaner
- Переустановите версию(и) .Net, стараясь минимизировать их количество (обычно вам нужна только последняя версия)
- Установите Visual Studio 2012 Professional и обновите до SP5.
Я не могу гарантировать успех, но именно так я бы попытался добиться действительно чистой установки и избежать переустановки Windows.
Я предлагаю сделать резервную копию образа системного диска, на всякий случай, чтобы вы могли вернуться к нему. Я рекомендую Стандарт резервного копирования AOMEI.
решение2
Была та же проблема с VS2015. В моем случае удаление следующих файлов из папки проекта решило проблему
\.vs\myProjectName\v14\.suo
\myProjectName.VC.db
\x64 (the whole x64 build output folder if there is one)