Не вдалося завантажити файл або збірку "Microsoft.Build.Framework" (VS 2017)


87

Коли я намагаюся запустити команду "update-database", я отримую такий виняток:

Вкажіть прапор '-Verbose', щоб переглянути оператори SQL, що застосовуються до цільової бази даних. System.IO.FileNotFoundException: Не вдалося завантажити файл або збірку 'Microsoft.Build.Framework, Версія = 15.1.0.0, Культура = нейтральна, PublicKeyToken = b03f5f7f11d50a3a' або одна із залежностей. Система не може знайти вказаний файл. Ім'я файлу: 'Microsoft.Build.Framework, Версія = 15.1.0.0, Культура = нейтральна, 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
Німецькою мовою це повідомлення про помилку звучить так: "Die Datei oder Assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine Abhängigkeit davon wurde nicht gefunden".
Уве Кейм,

Відповіді:


91

Я вважаю, у мене була та ж проблема, що і у вас. Я не зберегла ціле повідомлення про помилку, але моє повідомлення про помилку було

' Не вдалося завантажити файл або збірку' Microsoft.Build.Framework, Версія = 15.1.0.0, Культура = нейтральна, PublicKeyToken = b03f5f7f11d50a3a 'або одна із залежностей. Система не може знайти вказаний файл. '

Я використовую Visual Studio 2017 і намагався це зробити Update-Databaseпісля Add-Migration.

Щоб вирішити проблему, я закрив Visual Studio і знову відкрив його , а потім знову запустив Update-Database.

Це може вирішити вашу проблему, а може і не вирішити її, але я думав опублікувати на всякий випадок, якщо це допоможе.


6
Так, здається, "Включити-Вимкнути І Знову" - це правильний шлях до вирішення у цьому випадку.
Даррен Остер,

16
Це працює, але я не вважаю це правильною відповіддю. Я хотів би це виправити раз і назавжди, без необхідності перезапускати VS.
Станіслав

1
Це відбувається кожного разу після міграції, і для роботи потрібна повна перезавантаження ПК.
OverMars

3
Я спробував кожне із запропонованих рішень. Здається, ніхто з них не вирішує проблему назавжди. Я повинен продовжувати перезапускати Visual Studio.
Аугусто Баррето

4
Це відкрите видання в Github тут github.com/aspnet/EntityFramework6/issues/382
Bil Simser,

99

Наш локальний сценарій збірки використовував стару версію nuget.exe( 4.7.1.5393) для відновлення пакунків NuGet. Ми почали отримувати цю помилку після оновлення до версії Visual Studio 2019 16.5.0. Оновлення до останньої версії nuget.exe( 5.4.0.6315) вирішило проблему для нас.

nuget.exeможна завантажити тут: https://www.nuget.org/downloads .


27
Зіткнувся з цією проблемою, коли ми встановили лише VS2019 на сервері збірки. Щоб виправити це у нашій збірці Azure DevOps, працює запит версії 5.4.0 на етапі встановлення інструменту NuGet.
Старійшина Smash

3
Оновлено з 4.3.0 до 5.6 на моєму TeamCity. Це вирішило мою проблему. Дякую!
Ісаїт

3
Це було все. Спасибі купу! Пішов з 4.4.1 на 5.4.0.
DaleyKD

2
@ElderSmash Ми також використовуємо збірку Azure DevOps. У нашому випадку проблема була вирішена шляхом оновлення кроку програми встановлення NuGet з NuGetToolInstaller@0до NuGetToolInstaller@1, навіть без зазначення нової версії. Не впевнений, однак, чи виправляє це основну причину проблеми, чи виправлення - це лише побічний ефект очищення локального кешу.
MarkusM

2
@ElderSmash Це була саме моя проблема та рішення, дякую!
Дані

41

Основною причиною цієї проблеми є відносні шляхи у 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\.


Я використовую Visual Studio Professioal, якщо я теж буду робити те саме. Я отримую цю помилку кілька разів?
Шань

У мене не було папки MSBuild під IDE (версія спільноти), я скопіював свою MSBuild з "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community", і це нічого не виправило.
OverMars

1
Я використовую 2017 Pro, і це вирішило проблему для мене. +1
Том Райт,

2
Зверніть увагу, що якщо ви оновите VS2017 після виправлення, вам, можливо, доведеться оновити devenv.exe.config ще раз
Mike Peterson

2
Ця відповідь просто допомогла мені вдруге - після оновлення VS2017 вам потрібно зробити це знову, як каже @MikePeterson.
Джеймс Монгер,

34

Я знайшов обхідний шлях, який, здається, вирішує проблему назавжди, принаймні в моєму середовищі, що працює VS 2017 Professional 15.5.2 та Entity Framework 6.1.1.

По суті, встановіть DLL (з декількома пов’язаними) в GAC (Global Assembly Cache), і проблема зникне.

Виконайте такі дії:

  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"
  1. Перезапустіть Visual Studio 2017

По суті, GAC (у більшості випадків) буде надано пріоритет, коли .NET намагається завантажити DLL, а FileNotFoundException зникне, оскільки ваша DLL тепер буде вирішена через GAC.

Знову ж таки, це працює для мене, і це просто обхідний шлях, він не вирішить саму основну проблему, але принаймні мені не потрібно постійно перезапускати VS, намагаючись працювати з міграціями EF, і це досить добре для мене.


1
Працював і у мене. Командний рядок розробника Visual Studio 2017 знаходиться в C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools і повинен запускатися як адміністратор.
Девід Летурно,

2
FYI - це може спричинити проблеми, коли Microsoft оновлює продукт і записи GAC стають недійсними (нова версія або зміна шляху .. pro проти підприємства тощо). Особливо проблема з оновленням до останньої версії 15.8.0. Якщо ваші проекти не завантажуються (через використання цього рішення), див. Тут: developercommunity.visualstudio.com/content/problem/311136/…
Barry,

11

Це спрацювало для мене - здається, це проблема, яка не підтримується, починаючи з 2020 року.

На кроці Azure Build Pipeline> NuGet tool installerперейдіть Version of NuGet.exe to installна нову версію, наприклад 5.4.0. Перевірте версії за адресою https://dist.nuget.org/tools.json .

Випуск зник і тепер успішно збирається.


Оновлення використаної версії nuget також було способом виправлення проблеми для мене.
NP83

7

Мій зниклий файл або версія збірки відрізняється від запитання.

У мене є ця помилка, коли я намагався опублікувати свій проект ASP.net

Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Я вирішив проблему, встановивши Microsoft Build Tools 2015

Я думаю, що моя проблема, спричинена тим, що я публікую проект, побудований разом із VS 2015 у VS 2017. Сподіваюся, що він може допомогти іншим, хто має таку ж проблему.


Це допомогло мені виправити побудову CI у попередній TFS. Один із моїх серверів збірки не мав цих інструментів, і він постійно не працював із дуже подібною проблемою.
Budhead2004,

4

Про всяк випадок перезапуску Visual Studio не працює Перейдіть до диспетчера завдань / Провідника процесів та вміння VBCSCompiler.exe

введіть тут опис зображення

Запропонуйте використовувати Провідник процесів


1
Я пробую це рішення "Про всяк випадок, якщо перезапуск Visual Studio не працює Перейдіть до диспетчера завдань / Провідника процесів та вміння VBCSCompiler.exe" і працюйте нормально.
Мохаммад Джихад


2

У моєму випадку щось (можливо, NuGet-Update) додало AssemblyBinding у файл web.config:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>

Після видалення цього залежногоAssemby-Entry я міг опублікувати проект знову.


2

Це спрацювало для мене: помилка виникає, коли я виконую команду відновлення nuget. Nuget версії 4.6.2. У мене є два шляхи вирішення цієї проблеми.

Використовуйте Nuget 4.8.2 і вище. gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

У нас виникла ця проблема, і ось що нам потрібно було зробити у нашому випадку:

Проблема полягала в тому, що у нас був (IDbCommandInterceptor)налаштований перехоплювач команд бази даних, який викликався HttpRuntime.Cache["somekey"], і з якоїсь причини через це не вдалося запустити команди міграції. Після усунення цієї залежності всі команди працювали бездоганно. Можливо HttpRuntime, не вдалося знайти DLL Build Framework?

Тож перевірте весь стовпчик викликів, коли команди міграції не виявляють, чи є у вас подібна проблема.


Дуже цікаво, мій стек стека включав виклик методу за допомогою HttpContext.Current. Видалення цього видалило проблему.
Timores

0

Я зіткнувся з такою ж проблемою під час оновлення компонентів XCode / Mono на macOS.

Рішенням є оновлення Visual Studio для Mac до останньої версії.

Я думаю, що ця проблема виникає у використанні нових інструментів MSBuild із пакета .NET Core 3.0, який інстальовано з новою версією XCode / Mono.


0

Дякую тим, хто вже розмістив повідомлення. Мою ситуацію вирішило поєднання вищесказаного. У мене було кілька версій 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. Ось приклад одного із записів:

<dependentAssembly>
      <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/>
      <codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" />
</dependentAssembly>

2
ваш приклад, здається, зник.
Jammer

0

Використання Visual Studio 2019 Community edition. Я спробував інші рішення без особливої ​​удачі, але після очищення кешу NuGet проблема, здавалося, була вирішена. введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.