web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly EntityFramework

J'ai déployé une application ASP.NET MVC 4 et la page d'accueil se charge très bien, mais lorsque j'essaie d'accéder à une autre page (qui essaie tous de se connecter à une base de données SQL), l'erreur suivante apparaît:

Impossible de charger le fichier ou l'assembly 'EntityFramework, Version = 4.1.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040) Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Consultez la trace de la pile pour plus d’informations sur l’erreur et son origine dans le code. 

Détails des exceptions: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'EntityFramework, version = 4.1.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

J'ai vérifié le fichier Web.config et il contient les entrées pertinentes suivantes:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
...
<compilation targetFramework="4.0" />

J'ai lu tout ce que j'ai pu trouver via Google, mais rien n'a encore été aidé. Je sais que la version de EF avec laquelle j'ai construit l'application est différente de celle qui se trouve sur la machine à déployer, mais je pourrais vous indiquer comment corriger cette différence.

15
Splendor

Vous semblez utiliser EF5 sur .NET Framework 4 (d’où la version 4.4.0.0 dans votre fichier de configuration), mais l’exception que vous obtenez concerne EF 4.1 (la version est 4.1.0.0). Il semble que certains assemblys que vous utilisez essaient encore d'utiliser 4.1 alors que les autres EF5 (4.4.0.0). Assurez-vous de référencer la même assemblée partout. Vous devez donc mettre à jour toutes les références pour utiliser EF5 et reconstruire le projet. Btw. L'entrée dans le fichier de configuration sert simplement à pointer le .NET Framework vers un Type qui sait lire la section de configuration. Il n'est donc pas suffisant de mettre à jour ceci pour que l'application fonctionne avec EF5. 

15
Pawel

vous pouvez essayer ce qui suit:

dans l'explorateur de solutions, accédez au nœud de référence et localisez le nœud de référence EntityFramework, puis définissez-le sur False la propriété Specific Version.

puis supprimez l'identifiant de version de votre web.config, remplacez:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

avec simplement:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />

de cette manière, l'erreur liée aux versions incorrectes devrait être résolue.

toujours comme d’autres dit dans les commentaires, il est bon si vous obtenez toutes vos références de NuGet et archivez tout dans votre système de contrôle de source.

cette approche a fonctionné pour moi à maintes reprises pour de nombreux assemblages et ne nécessite aucune modification supplémentaire de web.config lorsque vous effectuez une mise à niveau ultérieure vers une version plus récente de EF.

4
Davide Piras

Avant de vous amuser à mettre à jour toutes les références, essayez de redémarrer Visual Studio. Cela a résolu le problème pour moi.

1
Jay Dawkins

J'ai rencontré ce problème en essayant de déboguer un projet localement sur IIS Express.

J'ai déchargé manuellement le site en ouvrant les options IIS Express et en sélectionnant Stop Site. Ensuite, j'ai pu procéder normalement.

0
Shoe