Не удалось загрузить файл или сборку "Microsoft.Build.Framework" (VS 2017)
Когда я пытаюсь запустить команду "update-database", я получаю это исключение:
Укажите флаг '-Verbose' для просмотра применяемых операторов SQL к целевой базе данных. System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'Microsoft.Build.Framework, Version = 15.1.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей. Система не может найти указанный файл. Имя файла: 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a '
WRN: Регистрация привязки сборки отключена. Чтобы включить сборку регистрация сбоев, установить значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) на 1. Примечание: там это некоторое снижение производительности, связанное с сбоем привязки сборки Ведение журнала. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog].
Не удалось загрузить файл или сборку "Microsoft.Build.Framework, Версия = 15.1.0.0, Культура = нейтраль, PublicKeyToken = b03f5f7f11d50a3a 'или одной из его зависимостей. Система не может найти указанный файл. `
Ответы
Ответ 1
Я считаю, что у меня была такая же проблема, как и вы (я не сохранил все сообщение об ошибке, но мое сообщение об ошибке было
'Не удалось загрузить файл или сборку Microsoft.Build.Framework, Версия = 15.1.0.0, Культура = нейтраль, PublicKeyToken = b03f5f7f11d50a3a 'или одной из его зависимостей. Система не может найти указанный файл. '
Я использую Visual Studio 2017 и пытаюсь выполнить обновление базы данных после добавления-миграции.
Чтобы решить проблему, я закрыл Visual Studio и снова открыл ее, а затем снова запустил Update-Database.
Это может или не может решить вашу проблему, но я думал, что опубликую на всякий случай, если это поможет.
Ответ 2
Основной причиной этой проблемы являются относительные пути в файле devenv.exe.config
к Microsoft.Build.Framework.dll
(см. Теги xml).
Некоторые расширения Visual Studio изменяют текущий каталог и делают относительные пути недействительными.
Чтобы исправить это, откройте этот файл в каталоге C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\
. и замените все ..\..\MSBuild\15.0\Bin\
на C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\
.
Ответ 3
Я нашел обходное решение, которое, похоже, разрешает проблему навсегда, по крайней мере, в моей среде, работающей VS 2017 Professional 15.5.2 и Entity Framework 6.1.1.
В принципе, установите DLL (с несколькими связанными) в GAC (глобальный кэш сборок), и проблема исчезнет.
Выполните следующие действия:
1- Закройте все запущенные экземпляры Visual Studio 2017
2- Запустите командную строку разработчика Visual Studio 2017
3 Введите следующие команды (замените Professional вашей редакцией, Enterprise или Community, или настройте путь соответственно):
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll"
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll"
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll"
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll"
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll"
gacutil/i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"
4- Перезапустите Visual Studio 2017
По сути, GAC (в большинстве случаев) получает приоритет, когда .NET пытается загрузить DLL, и FileNotFoundException исчезнет, так как ваша DLL теперь будет разрешена через GAC.
Опять же, это работает для меня, и это просто обходное решение, оно не решит сама проблема ядра, но по крайней мере мне не нужно перезапускать VS все время, пытаясь работать с EF-миграциями, и это достаточно хорошо для меня.
Ответ 4
На всякий случай перезагрузка Visual Studio не работает Перейти к Диспетчер задач/Проводник процессов и мастерство VBCSCompiler.exe
![введите описание изображения здесь]()
Предложите использовать Process Explorer
Ответ 5
Мой отсутствующий файл или версия сборки отличается от вопроса.
У меня есть эта ошибка, когда я пытался опубликовать свой проект ASP.net
Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Я решил проблему, установив Microsoft Build Tools 2015
Я думаю, что моя проблема вызвана тем, что я публикую проект, созданный с VS 2015 в VS 2017. Надежда может помочь другим, у которых есть такая же проблема.
Ответ 6
Закрытие и повторное открытие Visual Studio работает как шарм!
Ответ 7
У нас была эта проблема, и вот что нам нужно сделать в нашем случае:
Проблема заключалась в том, что у нас был перехватчик команд базы данных (IDbCommandInterceptor)
, настроенный с именем HttpRuntime.Cache["somekey"
], и по какой-то причине из-за этого из-за этого не удалось выполнить команды миграции. После удаления этого параметра все команды работали идеально. Может быть, HttpRuntime
не смогли найти dll Build Framework?
Итак, проверьте весь callstack, когда команды миграции не видят, есть ли у вас аналогичная проблема.
Ответ 8
Сложные типы в модели также могут вызывать эту проблему. Пример: если у вас есть список в вашей модели.
Ответ 9
Спасибо тем, кто уже разместил. Моя ситуация была решена комбинацией вышеупомянутого. У меня было несколько версий Visual Studio: 2015, 2017, 2019. В какой-то момент версия MSBUILD изменилась с 15.1 до 15.9. Я решил эту проблему, обновив файл C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.config, чтобы он указывал на библиотеку 15.9. Вот пример одной из записей: