Impossible de charger le fichier ou l'assembly 'Microsoft.Build.Framework' (VS 2017)

87

Lorsque j'essaye d'exécuter la commande "update-database", j'obtiens cette exception:

Spécifiez l'indicateur «-Verbose» pour afficher les instructions SQL appliquées à la base de données cible. System.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. Nom de fichier: 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la journalisation de la liaison d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assembly, définissez la valeur de Registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) sur 1. Remarque: Il existe une pénalité de performances associée à la journalisation des échecs de liaison d'assembly. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Impossible de charger le fichier ou l'assembly 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou l'une de ses dépendances. Le système ne trouve pas le fichier spécifié.

Oleksii Vorochenko
la source
1
En allemand, ce message d'erreur se lit comme suit: "Die Datei oder Assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a "oder eine Abhängigkeit davon wurde nicht gefunden".
Uwe Keim

Réponses:

91

Je crois que j'ai eu le même problème que vous. Je n'ai pas enregistré l'intégralité du message d'erreur, mais mon message d'erreur était

' Impossible de charger le fichier ou l'assembly' Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. '

J'utilise Visual Studio 2017 et j'essayais de le faire Update-Databaseaprès Add-Migration.

Pour résoudre le problème, j'ai fermé Visual Studio et l' ai rouvert , puis réexécuté Update-Database.

Cela peut ou non résoudre votre problème, mais je pensais que je publierais juste au cas où cela aiderait.

Eightgate
la source
6
Oui, il semblerait que "Turn-It-Off-And-On-Again" soit le chemin correct vers la résolution dans ce cas.
Darren Oster
16
Cela fonctionne mais je ne considère pas cela comme une réponse correcte. Je voudrais le réparer une fois et pour toujours, sans avoir à redémarrer VS.
Stanislav le
1
Cela se produit à chaque fois après une migration maintenant et cela nécessite un redémarrage complet du PC pour fonctionner.
OverMars
3
J'ai essayé toutes les solutions proposées. Aucun d'entre eux ne semble résoudre définitivement le problème. Je dois continuer à redémarrer Visual Studio.
Augusto Barreto
4
Ceci est un numéro ouvert dans Github ici github.com/aspnet/EntityFramework6/issues/382
Bil Simser
99

Notre script de construction local utilisait une ancienne version de nuget.exe( 4.7.1.5393) pour restaurer les packages NuGet. Nous avons commencé à obtenir cette erreur après la mise à jour vers la version Visual Studio 2019 16.5.0. La mise à jour vers la dernière version de nuget.exe( 5.4.0.6315) a résolu le problème pour nous.

nuget.exepeuvent être téléchargés ici: https://www.nuget.org/downloads .

Corey Smith
la source
27
Face à ce défi lorsque nous avons installé uniquement VS2019 sur un serveur de build. Pour résoudre ce problème dans notre version Azure DevOps, il faut demander la version 5.4.0 à l'étape du programme d'installation de l'outil NuGet.
Elder Smash
3
Mise à jour de 4.3.0 à 5.6 sur mon TeamCity. Cela a résolu mon problème. Merci!
Esaith le
3
C'était ça. Merci beaucoup! Je suis passé de 4.4.1 à 5.4.0.
DaleyKD le
2
@ElderSmash Nous utilisons également une version Azure DevOps. Dans notre cas, le problème a été résolu en mettant à jour l'étape du programme d'installation NuGet de NuGetToolInstaller@0vers NuGetToolInstaller@1, même sans spécifier une version plus récente. Vous ne savez pas cependant si cela corrige la cause première du problème ou si le correctif est juste un effet secondaire de la suppression du cache local.
MarkusM
2
@ElderSmash C'était exactement mon problème et ma solution, merci!
Danie le
41

La cause première de ce problème provient des chemins relatifs dans le devenv.exe.configfichier vers Microsoft.Build.Framework.dll(voir les balises xml).

Certaines extensions Visual Studio modifient le répertoire actuel et rendent les chemins relatifs non valides.

Pour résoudre ce problème, ouvrez ce fichier dans le C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\répertoire. et remplacez tout ..\..\MSBuild\15.0\Bin\par C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.

Renaud Bancel
la source
J'utilise Visual Studio Professioal si je dois faire de même. Je reçois cette erreur plusieurs fois?
Shan
Je n'avais pas de dossier MSBuild sous IDE (version communautaire), j'ai copié mon MSBuild à partir de "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community" et cela n'a rien corrigé.
OverMars
1
J'utilise 2017 Pro et cela a résolu le problème pour moi. +1
Tom Wright
2
Notez que si vous mettez à jour VS2017 après avoir effectué ce correctif, vous devrez peut-être mettre à jour devenv.exe.config à nouveau
Mike Peterson
2
Cette réponse m'a aidé une deuxième fois - après la mise à jour de VS2017, vous devez le faire à nouveau, comme le dit @MikePeterson.
James Monger
34

J'ai trouvé une solution de contournement qui semble résoudre le problème pour de bon, du moins sur mon environnement exécutant VS 2017 Professional 15.5.2 et Entity Framework 6.1.1.

Fondamentalement, installez la DLL (avec quelques autres) dans le GAC (Global Assembly Cache) et le problème disparaîtra.

Suivez ces étapes:

  1. Fermer toutes les instances en cours d'exécution de Visual Studio 2017

  2. Lancez l'invite de commande du développeur Visual Studio 2017

  3. Tapez les commandes suivantes (remplacez Professional par votre édition, Enterprise ou Community, ou ajustez le chemin en conséquence):

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. Redémarrez Visual Studio 2017

En substance, le GAC aura (dans la plupart des cas) la priorité lorsque .NET essaie de charger une DLL et FileNotFoundException disparaîtra car votre DLL sera désormais résolue via le GAC.

Encore une fois, cela fonctionne pour moi et c'est simplement une solution de contournement, cela ne résoudra pas le problème principal lui-même, mais au moins je n'ai pas à redémarrer VS tout le temps lorsque j'essaye de travailler avec des migrations EF, et c'est assez bien pour moi.

Monsieur Lingua
la source
1
A travaillé pour moi aussi. L'invite de commandes du développeur Visual Studio 2017 se trouve dans C: \ ProgramData \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Visual Studio 2017 \ Visual Studio Tools et doit être exécutée en tant qu'administrateur.
David Létourneau
2
FYI - cela peut causer des problèmes lorsque Microsoft met à niveau le produit et que les entrées GAC deviennent invalides (version plus récente ou changement de chemin .. pro vs entreprise, etc.). Notamment un problème lors de la mise à niveau vers la dernière version 15.8.0 Si vos projets ne se chargent pas (en raison de l'utilisation de cette solution), voir ici: developercommunity.visualstudio.com/content/problem/311136/…
Barry
11

Cela a fonctionné pour moi - semble être un problème non lié au support à partir de 2020.

Dans l' étape Azure Build Pipeline>, NuGet tool installerpassez Version of NuGet.exe to installà une version plus récente, comme 5.4.0. Vérifiez les versions sur https://dist.nuget.org/tools.json .

Le problème a disparu et se construit maintenant avec succès.

Alfred Wallace
la source
La mise à jour de la version de nuget utilisée était également le moyen de corriger le problème pour moi.
NP83 le
7

Ma version de fichier ou d'assemblage manquante est différente avec la question.

J'ai cette erreur lorsque j'ai essayé de publier mon projet ASP.net

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

J'ai résolu le problème en installant Microsoft Build Tools 2015

Je pense que mon problème est causé par la publication d'un projet qui a été construit avec VS 2015 dans VS 2017. Hope peut aider d'autres personnes qui ont le même problème.

V-SHY
la source
Cela m'a aidé à corriger une version CI dans un TFS sur site. Un de mes serveurs de build ne disposait pas de ces outils et il échouait sans cesse avec un problème très similaire.
Budhead2004
4

Juste au cas où le redémarrage de Visual Studio ne fonctionne pas Accédez au Gestionnaire de tâches / Explorateur de processus et à la compétence VBCSCompiler.exe

entrez la description de l'image ici

Suggérer d'utiliser Process Explorer

bitsmonkey
la source
1
J'essaye cette solution "Juste au cas où le redémarrage de Visual Studio ne fonctionne pas Allez dans le Gestionnaire de tâches / Explorateur de processus et la compétence VBCSCompiler.exe" et fonctionne correctement.
Mohammad Jihad Helal
2

Fermer et rouvrir Visual Studio fonctionne comme un charme!

Masoud Darvishian
la source
2

Dans mon cas, quelque chose (peut-être un NuGet-Update) a ajouté un AssemblyBinding dans le fichier 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>

Après avoir supprimé cette entrée dépendante, je pourrais à nouveau publier le projet.

rougeM76
la source
2

Cela a fonctionné pour moi: l'erreur se produit lorsque j'exécute la commande de restauration nuget. Nuget version 4.6.2. J'ai deux façons de résoudre ce problème.

Utilisez Nuget 4.8.2 et supérieur. gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll

Yovanny Rodríguez
la source
1

Nous avons eu ce problème, et voici ce que nous devions faire dans notre cas:

Le problème était que nous avions (IDbCommandInterceptor)configuré un intercepteur de commande de base de données qui appelait HttpRuntime.Cache["somekey"], et pour une raison quelconque, les commandes de migration n'ont pas pu s'exécuter à cause de cela. Après avoir supprimé cette dépendance, toutes les commandes se sont parfaitement déroulées. Peut HttpRuntime- être n'avez -vous pas pu trouver la DLL de Build Framework?

Vérifiez donc toute la pile d'appels lorsque les commandes de migration ne parviennent pas à voir si vous rencontrez un problème similaire.

Øyvind Rask
la source
Très intéressant, ma trace de pile incluait un appel à une méthode utilisant HttpContext.Current. La suppression de cela a supprimé le problème.
Timores
0

J'ai rencontré le même problème lors de la mise à jour des composants XCode / Mono sur macOS.

La solution consiste à mettre à jour Visual Studio pour Mac vers la dernière version.

Je pense que ce problème cause l'utilisation de nouveaux outils MSBuild à partir du package .NET Core 3.0 installé avec la nouvelle version XCode / Mono.

picolino
la source
0

Merci à ceux qui ont déjà posté. Ma situation a été résolue par une combinaison de ce qui précède. J'ai eu plusieurs versions de Visual Studio: 2015, 2017, 2019. À un moment donné, la version de MSBUILD est passée de 15.1 à 15.9, et j'ai résolu ce problème en mettant à jour le C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configfichier pour pointer vers la bibliothèque 15.9. Voici un exemple de l'une des entrées:

<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>
Chilberto
la source
2
votre exemple semble avoir disparu.
Jammer
0

Utilisation de l'édition communautaire de Visual Studio 2019. J'ai essayé les autres solutions sans beaucoup de chance, mais après m'avoir vidé le cache NuGet, le problème semblait être résolu. entrez la description de l'image ici

JDandChips
la source