2015-11-15 4 views
18

Я только что установил сообщество Visual Studio 2015 на своем компьютере. До сих пор я использовал Visual Studio 2010 Professional. Теперь, когда я пытаюсь запустить мои приложения MVC в сборке на веб-сервере, я получаю следующее сообщение об ошибке.Почему я получаю сообщение об ошибке «__CrtGetFileInformationByHandleEx» при попытке скомпилировать

Запись процедура точка __CrtGetFileInformationByHandleEx не может находиться в \ WINDOWS \ system32 \ msvcp120_clr0400.dll

я получаю то же сообщение об ошибке при попытке выполнить vbc.exe (The Visual Basic составитель) на непосредственно в командной строке. Мое приложение MVC также показывает YSOD с

Ошибка компиляции - сообщение об ошибке компилятора: Ошибка компилятора с кодом ошибки -1073741511.

Как я могу исправить свой VS, чтобы снова запустить свои программы ?!

шаги, которые я пробовал

  1. Uninstall VS 2015 Community
  2. Удаление и повторная установка .NET 4.6 и .NET 4.5.2
  3. DISM/Online/Cleanup-Image/RestoreHealth
  4. В .NET Repair Tool
  5. Run ПФС/SCANNOW
  6. вручную переименовать файл msvcr120_clr0400.dll в msvcr120_clr0400.dll.corrupt и сделать 1-5
  7. Удаление и переустановка VS 2010 Вт/SP1

sfc /scannow успешно заменил файл msvcr120_clr0400.dll, но он заменил его точно такой же CTP файла, как и раньше!

EDIT:

Проблема библиотеки DLL из моей системы доступны для скачивания здесь:

+0

Попробуйте ремонт устанавливает. – SLaks

+0

@SLaks, из которых один, VS 2010 или VS 2015? Или оба? –

+0

Вы третий пользователь SO, у которого есть эта странная проблема на этой неделе. Дождь шел всю неделю, и откуда идет дождь, не всегда очевидно, потому что никто не говорит, что именно произошло с их машиной. Скорее всего, это обновление для Windows, жалобы на него недостаточно. Но есть много * о очень распространенном бедствии на машинах программистов и особенно неприятно на этой неделе, вам нужно удалить Avast, если вы используете этот ужасный вирус. –

ответ

28

Microsoft знает об этой проблеме с KB3098779 и 3097997:

https://support.microsoft.com/en-us/kb/3118750

Рекомендация удалить эти патчи, а затем повторную проверку на наличие обновлений. Теперь доступны новые версии этих патчей безопасности (которые не нарушают компилятор VB).

+0

Это точно соответствует моему делу. У меня был .NET 4.5.2 на компьютере, и я установил VS 2015. Спасибо, что нашел это! –

+3

Большое спасибо за это решение. Мне потребовалось некоторое время, чтобы добраться сюда, так как моя проблема началась в другом месте, поэтому на всякий случай, когда кто-то ищет, как решить подобную ошибку, как та, что приведена ниже при компиляции XAML, это делает трюк. 'C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Xaml.targets (347,5): ошибка XC1043: расширение« Microsoft.Activities.Build.Validation.ValidationBuildExtension »выбрало исключение типа ' System.IO.FileLoadException ':' Процедура, импортированная 'Microsoft.VisualBasic.Activities.Compiler.dll 'не может быть загружена.'. [C: \ Something \ Something \ Something.csproj] ' – Pigsty

+0

@Pigsty благодарит вас за публикацию этого комментария. Вы спасли меня 1 x n^18 секунд поиска :) – GregoryBrad

3

Хорошо, я вижу это из файлов, загруженных в службу обмена, ваша установка .NET повреждена. Проблема с DLL Hell, ваш файл c: \ windows \ syswow64 \ msvcr120_clr400.dll - неправильная версия. Что-то, что вы можете увидеть при использовании Проводника и перейти к файлу. Щелкните правой кнопкой мыши и выберите «Свойства», перейдите на вкладку «Сведения».

enter image description here

Обратите внимание на слово "CTP" в названии продукта означает "Community Technology Preview". Термин Microsoft означает «бета-версия». Очевидно, что на вашей машине не должно быть бета-версии VS2013. Ваш msvcp120_clr0400.dll верен, это версия файла 12.0.52512,0. Это зависит от экспортируемой функции в DLL msvcr, которую еще не имела версия CTP.

Точно, как это случилось, всегда сложно перепроектировать. Вы третий пользователь SO, которого я знаю об этой проблеме на этой неделе, слишком много совпадений. Два основных сценария, если у вас когда-либо была версия CTP VS2013, установленная на компьютере, проблема в том, что она не обновилась, как должна быть. В противном случае очень типичная проблема с выпусками CTP, они довольно опасны, потому что деинсталлятор всегда является последним, что Microsoft получает правильно. И проблема была просто не обнаружена, пока вы не начали использовать программу, требующую этого экспорта.

Или это было вызвано установщиком-изгоем, скопировавшим старую версию на ваш компьютер без проверки номера версии. Гораздо менее вероятно, что установщики никогда не имеют веской причины для установки этого конкретного файла, поскольку он используется только когда-либо .NET Framework. Поэтому мои деньги на вашей машине повреждены CTP.

Вам необходимо решить эту проблему, исправив вашу машину. Не так просто, вы никогда не можете быть уверены, сколько других плохих DLL-файлов лежит вокруг такой плохой CTP-деинсталляции. Ярлык копирует эту конкретную DLL с хорошей машины. Но лучше всего переустановить .NET 4.6.

EDIT от OP:

Этот ответ правильно определил проблемные файлы, но переустановка (или любые другие общие шаги) не решить. В итоге я скопировал «хорошие» файлы с другого компьютера с номером версии 12.0.20806.33440.

+0

Название продукта в этом файле пронумеровано VS 12, которое AFAIK является номером версии Visual Studio 2015. Я только что установил предварительный просмотр сообщества до того, как эта ошибка началась, поэтому я предполагаю, что это преступник. Я удалю и посмотрю, что произойдет. –

+0

Нет, VS2015 - это номер версии 14. Как отмечалось в ответе, не используйте версии предварительного просмотра сообщества, CTP - бета и не должны работать правильно. Привлечение их к испортить вашу машину - еще один бонус. –

+0

Я никогда не использовал программное обеспечение CTP на своей машине. Я не знаю, как это получилось. –

3

KB3098779 представляется виновным на нашем сервере. Это патч, который установил мошенник CTP msvcr120_clr0400.dll, упомянутый в приведенном выше ответе. Решение: мы отменили набор патчей, который применил KB3098779, и все снова работает. FYI: это проблема .NET Framework 4+, а не Visual Studio. Наш сервер - стандартный IIS-сервер 2012: Visual Studio не установлен.

+0

Работал для меня. панель управления> Обновления> KB3098779> удалить, затем перезапустить. Проблема исчезла. –

0

Microsoft опубликовала уведомление об этом. https://support.microsoft.com/en-us/kb/3118750

Как другие указали слишком много людей за слишком короткое время, чтобы быть совпадением. Не проблема VS, это связано с плохим обновлением от Microsoft.

Информация от MS упоминает два патча безопасности (KB3098779 и KB3097997).

У меня есть только KB3098779, и мой сайт запущен. Он потребовал перезагрузки машины.

KB3097997 удален без перезагрузки. Мне, возможно, не нужно было удалять, но кажется разумным, учитывая, что он также подчиняется тому же уведомлению от MS.

2

У меня была такая же проблема в Windows 8.1, хотя KB3098779 и 3097997 не были установлены на моей машине. Вероятно, это произошло после установки ASP.Net 5.

Проблема была в том, что у меня были файлы mcvcr в версии 12.0.51670.34230, а файлы mcvcp уже были в 12.00.52512.0. Достаточно было скопировать файлы mcvcr (из System32 и SysWOW64) в этой версии с компьютера моего коллеги.

Если у вас есть проблемы с правами, установленных для TrustedInstaller на эти файлы, вы можете запустить эту команду PowerShell, а затем изменить права доступа с правами администратора:

takeown /A /F C:\windows\syswow64\msvcr120_clr0400.dll 
Смежные вопросы