Impossibile caricare il file o l'assembly "Microsoft.Build.Framework" (VS 2017)


87

Quando provo a eseguire il comando "update-database", ottengo questa eccezione:

Specificare il flag "-Verbose" per visualizzare le istruzioni SQL applicate al database di destinazione. System.IO.FileNotFoundException: impossibile caricare il file o l'assembly "Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" o una delle sue dipendenze. Il sistema non trova il file specificato. Nome file: "Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a"

WRN: la registrazione dell'associazione dell'assembly è disattivata. Per abilitare la registrazione degli errori di associazione dell'assembly, impostare il valore del Registro di sistema [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) su 1. Nota: è presente una riduzione delle prestazioni associata alla registrazione degli errori di associazione dell'assembly. Per disattivare questa funzione, rimuovere il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Impossibile caricare il file o l'assembly "Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" o una delle sue dipendenze. Il sistema non riesce a trovare il file specificato


1
In tedesco, questo messaggio di errore si legge: "Die Datei oder Assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine Abhängigkeit davon wurde nicht gefunden".
Uwe Keim

Risposte:


93

Credo di aver avuto lo stesso problema che hai avuto tu. Non ho salvato l'intero messaggio di errore, ma il mio messaggio di errore era

" Impossibile caricare il file o l'assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "o una delle sue dipendenze. Il sistema non trova il file specificato. '

Sto usando Visual Studio 2017 e stavo cercando di farlo Update-Databasedopo Add-Migration.

Per risolvere il problema, ho chiuso Visual Studio e l'ho riaperto , quindi ho eseguito Update-Databasenuovamente.

Questo potrebbe o meno risolvere il tuo problema, ma ho pensato di postare solo nel caso in cui potesse essere d'aiuto.


6
Sì, in questo caso sembrerebbe che "Turn-It-Off-And-On-Again" sia il percorso corretto per la risoluzione.
Darren Oster

16
Funziona ma non la considero una risposta corretta. Vorrei risolverlo una volta e per sempre, senza dover riavviare VS.
Stanislav

1
Succede ogni volta dopo una migrazione ora e richiede un riavvio completo del PC per funzionare.
OverMars

3
Ho provato tutte le soluzioni proposte. Nessuno di loro sembra risolvere definitivamente il problema. Devo continuare a riavviare Visual Studio.
Augusto Barreto

4
Questo è un problema aperto in Github qui github.com/aspnet/EntityFramework6/issues/382
Bil Simser

99

Il nostro script di build locale utilizzava una versione precedente di nuget.exe(4.7.1.5393 ) per ripristinare i pacchetti NuGet. Abbiamo iniziato a ricevere questo errore dopo l'aggiornamento alla versione di Visual Studio 2019 16.5.0. L'aggiornamento all'ultima versione di nuget.exe( 5.4.0.6315) ha risolto il problema per noi.

nuget.exepuò essere scaricato qui: https://www.nuget.org/downloads .


27
Abbiamo affrontato questa sfida quando abbiamo installato solo VS2019 su un server di build. Per risolvere questo problema nella nostra build di Azure DevOps, funziona per richiedere la versione 5.4.0 nel passaggio del programma di installazione dello strumento NuGet.
Elder Smash

3
Aggiornato da 4.3.0 a 5.6 sul mio TeamCity. Questo ha risolto il mio problema. Grazie!
Esaith

3
Era questo. Grazie mille! È passato da 4.4.1 a 5.4.0.
DaleyKD

2
@ElderSmash Stiamo usando anche una build Azure DevOps. Nel nostro caso il problema è stato risolto aggiornando il passaggio del programma di installazione di NuGet da NuGetToolInstaller@0a NuGetToolInstaller@1, anche senza specificare una versione più recente. Non sono sicuro, tuttavia, se questo risolva la causa principale del problema o se la correzione è solo un effetto collaterale della cancellazione della cache locale.
MarkusM

2
@ElderSmash Questo era esattamente il mio problema e la mia soluzione, grazie!
Danie

41

La causa principale di questo problema deriva dai percorsi relativi nel devenv.exe.configfile a Microsoft.Build.Framework.dll(vedi tag xml).

Alcune estensioni di Visual Studio stanno modificando la directory corrente e rendono non validi i percorsi relativi.

Per risolverlo, apri questo file nella C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\directory. e sostituisci tutto ..\..\MSBuild\15.0\Bin\con C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.


Sto usando Visual Studio Professioal, dovrei fare lo stesso. Ricevo più volte questo errore?
Shan

Non avevo una cartella MSBuild sotto IDE (versione Community), ho copiato il mio MSBuild da "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community" e non ha risolto nulla.
OverMars

1
Sto usando 2017 Pro e questo ha risolto il problema per me. +1
Tom Wright

2
Nota che se aggiorni VS2017 dopo aver apportato questa correzione, potresti dover aggiornare di nuovo devenv.exe.config
Mike Peterson

2
Questa risposta mi ha aiutato per la seconda volta: dopo aver aggiornato VS2017, devi farlo di nuovo come dice @MikePeterson.
James Monger

35

Ho trovato una soluzione alternativa che sembra risolvere il problema per sempre, almeno sul mio ambiente con VS 2017 Professional 15.5.2 ed Entity Framework 6.1.1.

Fondamentalmente, installa la DLL (con alcune correlate) nella GAC ​​(Global Assembly Cache) e il problema scomparirà.

Segui questi passi:

  1. Chiudi tutte le istanze in esecuzione di Visual Studio 2017

  2. Avvia il prompt dei comandi per gli sviluppatori di Visual Studio 2017

  3. Digita i seguenti comandi (sostituisci Professional con la tua edizione, Enterprise o Community, oppure modifica il percorso di conseguenza):

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. Riavvia Visual Studio 2017

In sostanza, alla GAC ​​(nella maggior parte dei casi) verrà data la priorità quando .NET sta tentando di caricare una DLL e FileNotFoundException scomparirà poiché la DLL verrà ora risolta tramite GAC.

Ancora una volta, funziona per me ed è semplicemente una soluzione alternativa, non risolverà il problema principale da solo, ma almeno non devo riavviare VS tutto il tempo quando provo a lavorare con le migrazioni EF, e questo è abbastanza buono per me.


1
Ha funzionato anche per me. Il prompt dei comandi per gli sviluppatori di Visual Studio 2017 si trova in C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools e deve essere eseguito come amministratore.
David Létourneau

2
Cordiali saluti - questo può causare problemi quando microsoft aggiorna il prodotto e le voci GAC diventano non valide (versione più recente o cambio di percorso .. pro vs enterprise, ecc.). In particolare un problema relativo all'aggiornamento all'ultima versione 15.8.0 Se i progetti non vengono caricati (a causa dell'utilizzo di questa soluzione), vedere qui: Developercommunity.visualstudio.com/content/problem/311136/…
Barry

11

Questo ha funzionato per me: sembra essere un problema di non supporto a partire dal 2020.

Nel passaggio Azure Build Pipeline> NuGet tool installer, Version of NuGet.exe to installpassa a una versione più recente, come 5.4.0. Controlla le versioni su https://dist.nuget.org/tools.json .

Il problema è scomparso e ora viene compilato correttamente.


L'aggiornamento della versione di nuget utilizzata è stato anche il modo per correggere il problema per me.
NP83

7

La mia versione mancante del file o dell'assembly è diversa dalla domanda.

Ho questo errore quando ho provato a pubblicare il mio progetto ASP.net

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

Ho risolto il problema installando Microsoft Build Tools 2015

Penso che il mio problema sia causato dalla pubblicazione di un progetto che è stato creato con VS 2015 in VS 2017. La speranza può aiutare altri che hanno lo stesso problema.


Questo mi ha aiutato a correggere una build CI in un TFS locale. Uno dei miei server di compilazione non disponeva di questi strumenti e continuava a fallire con un problema molto simile.
Budhead2004

4

Nel caso in cui il riavvio di Visual Studio non funzioni, vai a Task Manager / Process Explorer e abilità VBCSCompiler.exe

inserisci qui la descrizione dell'immagine

Suggerisci di utilizzare Process Explorer


1
Sto provando questa soluzione "Nel caso in cui il riavvio di Visual Studio non funzioni, vai a Task Manager / Process Explorer e abilità VBCSCompiler.exe" e funziona bene.
Mohammad Jihad Helal


2

Nel mio caso, qualcosa (forse un NuGet-Update) ha aggiunto un AssemblyBinding nel file 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>

Dopo aver rimosso quella voce di assemblaggio dipendente, potrei pubblicare di nuovo il progetto.


2

Questo ha funzionato per me: l'errore si verifica quando eseguo il comando di ripristino nuget. Versione Nuget 4.6.2. Ho due modi per risolvere questo problema.

Usa Nuget 4.8.2 e versioni successive. gacutil / i "C: \ Programmi (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

Abbiamo riscontrato questo problema ed ecco cosa dovevamo fare nel nostro caso:

Il problema era che avevamo un intercettore dei comandi del database (IDbCommandInterceptor)configurato che chiamava HttpRuntime.Cache["somekey"] e per qualche motivo i comandi di migrazione non venivano eseguiti a causa di ciò. Dopo aver rimosso questa dipendenza, tutti i comandi sono stati eseguiti perfettamente. Forse HttpRuntimenon sei riuscito a trovare la DLL Build Framework?

Quindi controlla l'intero stack di chiamate quando i comandi di migrazione non riescono a vedere se hai un problema simile.


Molto interessante, la mia analisi dello stack includeva una chiamata a un metodo che utilizza HttpContext.Current. La rimozione di questo ha rimosso il problema.
Timores

0

Ho riscontrato lo stesso problema durante l'aggiornamento dei componenti XCode / Mono su macOS.

La soluzione è aggiornare Visual Studio per Mac alla versione più recente.

Penso che questo problema sia causato dall'utilizzo dei nuovi strumenti MSBuild dal pacchetto .NET Core 3.0 installato con la nuova versione XCode / Mono.


0

Grazie a chi ha già postato. La mia situazione è stata risolta da una combinazione di quanto sopra. Ho avuto diverse versioni di Visual Studio: 2015, 2017, 2019. Ad un certo punto la versione di MSBUILD è passata dalla 15.1 alla 15.9 e ho risolto questo problema aggiornando il C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configfile in modo che punti alla libreria 15.9. Ecco un esempio di una delle voci:

<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
il tuo esempio sembra essere svanito.
Jammer

0

Utilizzo dell'edizione Community di Visual Studio 2019. Ho provato le altre soluzioni senza molta fortuna, ma dopo aver cancellato la cache di NuGet il problema sembrava essere stato risolto. inserisci qui la descrizione dell'immagine


0

Dopo aver provato tutti i metodi di cui sopra e altro WCFancora, l' esecuzione dell'app non è riuscita ancora per me. Errore: Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0..

nota: provato a riavviare VS, PC, uccidere i processi, ripulire le cache VS, cache nuget, obj, bin, .vs, packages

Quello che ha funzionato per me è stato rimuovere il *.csproj.userfile dei progetti .. Apparentemente aveva una configurazione obsoleta al suo interno. Ho perso 4 ore cercando di capirlo ..


0

Ho fatto un riavvio, dopo di che ho scoperto che il servizio web locale che stavo eseguendo era stato bloccato da un altro processo che aveva preso quella porta. Ho controllato il processo in esecuzione e ho terminato il processo utilizzando TCPView e tutto sembrava ricominciare a funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.