Datei oder Assembly 'Microsoft.Build.Framework' konnte nicht geladen werden (VS 2017)

83

Wenn ich versuche, den Befehl "update-database" auszuführen, wird folgende Ausnahme angezeigt:

Geben Sie das Flag '-Verbose' an, um die SQL-Anweisungen anzuzeigen, die auf die Zieldatenbank angewendet werden. System.IO.FileNotFoundException: Datei oder Assembly 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden. Dateiname: 'Microsoft.Build.Framework, Version = 15.1.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Die Protokollierung der Baugruppenbindung ist deaktiviert. Setzen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) auf 1, um die Protokollierung von Assemblybindungsfehlern zu aktivieren. Hinweis: Mit der Protokollierung von Assemblybindungsfehlern sind einige Leistungseinbußen verbunden. Entfernen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog], um diese Funktion zu deaktivieren.

Datei oder Assembly 'Microsoft.Build.Framework, Version = 15.1.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann die angegebene Datei nicht finden. "

Oleksii Vorochenko
quelle
1
In deutscher Sprache lautet diese Fehlermeldung: "Die Datei oder Assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine Zugehörigkeit wurde wurde nicht gefunden".
Uwe Keim

Antworten:

86

Ich glaube, ich hatte das gleiche Problem wie Sie. Ich habe nicht die gesamte Fehlermeldung gespeichert, aber meine Fehlermeldung war

' Datei oder Assembly konnte nicht geladen werden' Microsoft.Build.Framework, Version = 15.1.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden. '

Ich bin mit Visual Studio 2017 und versuche , zu tun Update-Databasenach Add-Migration.

Um das Problem zu beheben, habe ich Visual Studio geschlossen und erneut geöffnet und dann Update-Databaseerneut ausgeführt.

Dies kann Ihr Problem lösen oder auch nicht, aber ich dachte, ich würde nur für den Fall posten, dass es helfen würde.

Eightgate
quelle
5
Ja, es scheint, dass "Ein- und Ausschalten" in diesem Fall der richtige Weg zur Lösung ist.
Darren Oster
15
Das funktioniert, aber ich halte es nicht für eine richtige Antwort. Ich möchte es einmal und für immer reparieren, ohne VS neu starten zu müssen.
Stanislav
1
Dies geschieht jetzt jedes Mal nach einer Migration und erfordert einen vollständigen Neustart des PCs, um zu funktionieren.
OverMars
3
Ich habe jede der vorgeschlagenen Lösungen ausprobiert. Keiner von ihnen scheint das Problem dauerhaft zu lösen. Ich muss Visual Studio immer wieder neu starten.
Augusto Barreto
4
Dies ist ein offenes Problem in Github hier github.com/aspnet/EntityFramework6/issues/382
Bil Simser
98

Unser lokales Build-Skript verwendete eine ältere Version von nuget.exe( 4.7.1.5393), um NuGet-Pakete wiederherzustellen. Wir haben diesen Fehler nach dem Update auf die Visual Studio 2019-Version erhalten 16.5.0. Das Update auf die neueste Version von nuget.exe( 5.4.0.6315) hat das Problem für uns behoben.

nuget.exekann hier heruntergeladen werden: https://www.nuget.org/downloads .

Corey Smith
quelle
27
Wir haben uns dieser Herausforderung gestellt, als wir nur VS2019 auf einem Build-Server installiert haben. Um dies in unserem Azure DevOps-Build zu beheben, müssen Sie Version 5.4.0 im Installationsschritt des NuGet-Tools anfordern.
Elder Smash
3
In meiner TeamCity von 4.3.0 auf 5.6 aktualisiert. Dies hat mein Problem behoben. Vielen Dank!
Esaith
3
Das war's. Vielen Dank! Ging von 4.4.1 bis 5.4.0.
DaleyKD
2
@ElderSmash Wir verwenden auch einen Azure DevOps-Build. In unserem Fall wurde das Problem durch Aktualisieren des NuGet-Installationsschritts von NuGetToolInstaller@0auf gelöst NuGetToolInstaller@1, auch ohne Angabe einer neueren Version. Ich bin mir jedoch nicht sicher, ob dies die Hauptursache des Problems behebt oder ob das Update nur ein Nebeneffekt beim Löschen des lokalen Caches ist.
MarkusM
2
@ElderSmash Das war genau mein Problem und meine Lösung, danke!
Danie
40

Die Hauptursache für dieses Problem liegt in den relativen Pfaden in der devenv.exe.configDatei zu Microsoft.Build.Framework.dll(siehe XML-Tags).

Einige Visual Studio-Erweiterungen ändern das aktuelle Verzeichnis und machen relative Pfade ungültig.

Öffnen Sie diese Datei im C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ Verzeichnis . und ersetzen Sie alle ..\..\MSBuild\15.0\Bin\durch C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.

Renaud Bancel
quelle
Ich verwende Visual Studio Professioal, sollte ich das auch tun. Ich erhalte diesen Fehler mehrmals?
Shan
Ich hatte keinen MSBuild-Ordner unter IDE (Community-Version), ich habe meinen MSBuild aus "C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Community" kopiert und nichts behoben.
OverMars
1
Ich verwende 2017 Pro und dies hat das Problem für mich behoben. +1
Tom Wright
2
Beachten Sie, dass Sie, wenn Sie VS2017 nach diesem Fix aktualisieren, möglicherweise devenv.exe.config erneut aktualisieren müssen
Mike Peterson
2
Diese Antwort hat mir nur ein zweites Mal geholfen - nach dem Update von VS2017 müssen Sie dies erneut tun, wie @MikePeterson sagt.
James Monger
34

Ich habe eine Problemumgehung gefunden, die das Problem endgültig zu lösen scheint, zumindest in meiner Umgebung, in der VS 2017 Professional 15.5.2 und Entity Framework 6.1.1 ausgeführt werden.

Grundsätzlich installieren Sie die DLL (mit einigen verwandten) im GAC (Global Assembly Cache), und das Problem wird behoben.

Folge diesen Schritten:

  1. Schließen Sie alle laufenden Instanzen von Visual Studio 2017

  2. Starten Sie die Eingabeaufforderung für Visual Studio 2017 Developer

  3. Geben Sie die folgenden Befehle ein (ersetzen Sie Professional durch Ihre Edition, entweder Enterprise oder Community, oder passen Sie den Pfad entsprechend an):

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. Starten Sie Visual Studio 2017 neu

Im Wesentlichen erhält der GAC (in den meisten Fällen) Priorität, wenn .NET versucht, eine DLL zu laden, und die FileNotFoundException verschwindet, da Ihre DLL jetzt über den GAC aufgelöst wird.

Auch hier funktioniert es für mich und es ist einfach eine Problemumgehung. Es wird das Kernproblem selbst nicht lösen, aber zumindest muss ich VS nicht ständig neu starten, wenn ich versuche, mit EF-Migrationen zu arbeiten, und das ist gut genug für mich.

Herr Lingua
quelle
1
Hat auch für mich gearbeitet. Die Eingabeaufforderung für Visual Studio 2017 Developer befindet sich unter C: \ ProgramData \ Microsoft \ Windows \ Startmenü \ Programme \ Visual Studio 2017 \ Visual Studio Tools und muss als Administrator ausgeführt werden.
David Létourneau
2
Zu Ihrer Information - Dies kann zu Problemen führen, wenn Microsoft das Produkt aktualisiert und die GAC-Einträge ungültig werden (neuere Version oder Pfadänderung. Pro vs Enterprise usw.). Insbesondere ein Problem beim Upgrade auf die neueste Version 15.8.0. Wenn Ihre Projekte nicht geladen werden (aufgrund der Verwendung dieser Lösung), lesen Sie hier: Developercommunity.visualstudio.com/content/problem/311136/…
Barry
11

Dies hat bei mir funktioniert - scheint ab 2020 ein nicht unterstützendes Problem zu sein.

Wechseln Sie im Schritt Azure Build Pipeline> zu einer neueren Version, z . Überprüfen Sie die Versionen unter https://dist.nuget.org/tools.jsonNuGet tool installerVersion of NuGet.exe to install5.4.0 .

Das Problem ist verschwunden und wird nun erfolgreich erstellt.

Alfred Wallace
quelle
Das Aktualisieren der verwendeten Nuget-Version war auch der Weg, um das Problem für mich zu beheben.
NP83
7

Meine fehlende Datei oder Assembly-Version unterscheidet sich bei der Frage.

Ich habe diesen Fehler, als ich versuchte, mein ASP.net-Projekt zu veröffentlichen

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

Ich habe das Problem durch die Installation von Microsoft Build Tools 2015 gelöst

Ich denke, mein Problem wurde dadurch verursacht, dass ich ein Projekt veröffentliche, das mit VS 2015 in VS 2017 erstellt wurde. Hope kann anderen helfen, die das gleiche Problem haben.

V-SHY
quelle
Dies hat mir geholfen, einen CI-Build in einem lokalen TFS zu reparieren. Einer meiner Build-Server verfügte nicht über diese Tools und es kam immer wieder zu einem sehr ähnlichen Problem.
Budhead2004
4

Nur für den Fall, dass ein Neustart von Visual Studio nicht funktioniert Wechseln Sie zu Task-Manager / Prozess-Explorer und zu VBCSCompiler.exe

Geben Sie hier die Bildbeschreibung ein

Schlagen Sie die Verwendung des Prozess-Explorers vor

Bitsmonkey
quelle
1
Ich versuche diese Lösung "Nur für den Fall, dass ein Neustart von Visual Studio nicht funktioniert. Gehen Sie zu Task-Manager / Prozess-Explorer und Skill VBCSCompiler.exe" und funktionieren Sie einwandfrei.
Mohammad Jihad Helal
2

Das Schließen und erneute Öffnen von Visual Studio funktioniert wie ein Zauber!

Masoud Darvishian
quelle
2

Dies hat bei mir funktioniert: Der Fehler tritt auf, wenn ich den Befehl nuget restore ausführe. Nuget Version 4.6.2. Ich habe zwei Möglichkeiten, um dieses Problem zu lösen.

Verwenden Sie Nuget 4.8.2 und höher. gacutil / i "C: \ Programme (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll

Yovanny Rodríguez
quelle
1

Wir hatten dieses Problem, und hier ist, was wir in unserem Fall tun mussten:

Das Problem war, dass wir einen Datenbankbefehls-Interceptor (IDbCommandInterceptor)konfiguriert hatten, der HttpRuntime.Cache["somekey"] aufrief , und aus irgendeinem Grund Migrationsbefehle aus diesem Grund nicht ausgeführt werden konnten. Nachdem diese Abhängigkeit beseitigt wurde, liefen alle Befehle perfekt. VielleichtHttpRuntime konnten Sie die Build Framework-DLL nicht finden?

Überprüfen Sie daher den gesamten Callstack, wenn Migrationsbefehle nicht feststellen können, ob Sie ein ähnliches Problem haben.

Øyvind Rask
quelle
Sehr interessant, mein Stack-Trace enthielt einen Aufruf einer Methode mit HttpContext.Current. Durch Entfernen wurde das Problem behoben.
Timores
1

In meinem Fall hat etwas (möglicherweise ein NuGet-Update) eine AssemblyBinding in die web.config-Datei eingefügt:

<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>

Nachdem ich diesen abhängigen Assemby-Eintrag entfernt hatte, konnte ich das Projekt erneut veröffentlichen.

redM76
quelle
0

Vielen Dank an diejenigen, die bereits gepostet haben. Meine Situation wurde durch eine Kombination der oben genannten gelöst. Ich hatte mehrere Versionen von Visual Studio: 2015, 2017, 2019. Irgendwann ging die Version von MSBUILD von 15.1 auf 15.9. Ich habe dieses Problem behoben, indem ich die Datei C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ devenv.exe.config so aktualisiert habe, dass sie auf die Bibliothek 15.9 verweist. Hier ist ein Beispiel für einen der Einträge:

Chilberto
quelle
2
Ihr Beispiel scheint verschwunden zu sein.
Jammer
0

Ich habe das gleiche Problem beim Aktualisieren von XCode / Mono-Komponenten unter macOS.

Die Lösung besteht darin, Visual Studio für Mac auf die neueste Version zu aktualisieren.

Ich denke, dieses Problem liegt in der Verwendung neuer MSBuild-Tools aus dem .NET Core 3.0-Paket, das mit der neuen XCode / Mono-Version installiert wurde.

Picolino
quelle