web-dev-qa-db-fra.com

Entity Framework 5 - Impossible de charger le fichier ou l'assembly EntityFramework, Version = 5.0.0.0

J'essaie d'utiliser Entity Framework 5 pour mon projet, mais il semble que je ne parvienne pas à installer l'assembly pour qu'il soit conforme. Et depuis que j'ai installé ceci au départ en utilisant une pépite, je ne suis pas certain de ce que je dois faire pour que cela fonctionne comme prévu. Toute aide sur ce que je dois faire pour résoudre ce problème s'il vous plaît? 

* System.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly EntityFramework, version = 5.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 'ou l'une de ses dépendances. Le système ne parvient pas à trouver le fichier spécifié.WRN: journalisation de la liaison d'assemblage est désactivé. Pour activer la journalisation des échecs de liaison d'assemblage, définissez la valeur du registre. . . *  

en utilisant le journal de fusion, j'ai eu ceci

*** Assembly Binder Log Entry  (7/17/2012 @ 9:29:09 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\PROGRAM FILES (X86)\Microsoft VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\Microsoft\TESTWINDOW\vstest.executionengine.x86.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = WORKALOT\Tokorie
LOG: DisplayName = Budget.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = vstest.executionengine.x86.exe
Calling Assembly : Budget.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\PROGRAM FILES (X86)\Microsoft VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\Microsoft\TESTWINDOW\vstest.executionengine.x86.exe.Config
LOG: Using Host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based Assembly bind).
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.EXE.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.EXE.
LOG: All probing URLs attempted and failed.
13
Kobojunkie

Exécutez le outil de journalisation de fusion comme suggéré par le message d'erreur pour obtenir plus d'informations sur l'emplacement où le moteur d'exécution recherche les dll afin d'avoir une meilleure idée de la raison de son échec. 

Il existe un bon article sur Fusion-loggning de Scott Hanselman, sur la façon de l'activer, etc., puis exécutez simplement fuslogw en tant qu'administrateur à partir de la commande Invite.

Mise à jour

Le journal de fusion nous indique où le moteur d'exécution recherche vos DLL, dans ce cas Budget.Data, dans lequel il recherche:

bin/Release/Budget.Data.DLL 
bin/Release/Budget.Data/Budget.Data.DLL
bin/Release/Budget.Data.EXE
bin/Release/Budget.Data/Budget.Data.EXE

Pouvez-vous vérifier que la DLL est bien dans l'un de ces répertoires? Si c'est vérifier le framework cible sur votre DLL (vérifier les propriétés du projet)? Le cadre cible est-il compatible avec EF 5.0? Quel est le cadre cible de vos autres assemblées (le cas échéant) 

5
Tommy Grovnes

Êtes-vous sûr que le chemin est correct? Essayez de supprimer la référence "Entity Framework" et de la rajouter manuellement. 

Faites un clic droit pour ajouter une référence, puis naviguez ici et ajoutez la dll: 

C:\CHEMIN\TO\SOLUTION\packages\EntityFramework.5.0.0-rc\lib\net45\EntityFramework.dll

Assurez-vous également que le chemin est défini dans le fichier csproj du projet (clic droit sur projet, décharger, clic droit à nouveau, puis "Editer nomprojet.csproj"), vous devriez avoir quelque chose comme ceci: 

<Reference Include="EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.5.0.0-rc\lib\net45\EntityFramework.dll</HintPath>
</Reference>

Les autres éléments à vérifier sont le fichier packages.config pour vous assurer qu'il y est référencé et que la propriété "Copier en local" de la référence Entity Framework est définie sur true. Vous devrez peut-être également référencer l'Assemblée dans votre fichier web.config si vous l'utilisez dans un projet ASP.NET ou quelque chose de similaire.

4
Shahin Dohan

J'ai eu ce problème moi-même l'autre jour, lorsque je travaillais avec le contrôle de version (git) et le paquet Nuget pour ef5-rc. Ce qui a résolu le problème pour moi, c’est de supprimer (supprimer dans l’explorateur Windows) l’Assembly du dossier "packages" des solutions. Lorsque j'ai redémarré Visual Studio, Nuget m'a donné la possibilité de restaurer des packages. J'espère que cela t'aides!

1
thomrand
  1. Cochez la case "copie locale"
  2. Vérifier que la dll d'assemblage existe dans le dossier out put
  3. Vérifiez la référence dans la solution. Essayez la référence readd.
  4. Vérifiez la version et la clé publique de Assembly et dans le fichier de solution (vous pouvez ouvrir le fichier de solution visual studio et le modifier dans un éditeur de texte. Essayez de supprimer la clé publique du fichier de solution et de définir la version correcte si elle diffère.)
  5. De plus, ce problème peut survenir lorsque certains assemblages que vous ajoutez aux solutions que vous n'aviez pas. Si cela tente d’obtenir un assemblage correct ou essayez de reconstruire un assemblage avec les bibliothèques dont vous disposez.

Bonne chance!

1
gabba

J'ai fini par résoudre ceci pour un projet sur lequel je travaille. J'ai fini par supprimer tout le contenu du dossier .bin du projet à l'origine de l'erreur. Je suppose que ces fichiers ne sont réécrits qu’à des moments spécifiques ou lorsqu’un fichier .dll est modifié, etc. et n’a pas été traité par la migration. La suppression de ces fichiers, le nettoyage de la solution et la reconstruction semblaient résoudre le problème pour moi. 

0
BigDubb

Je reçois ce problème aussi. J'ai donc regardé un peu autour et j'ai trouvé ce qui suit.

Dans la section "Problèmes courants" de http://msdn.Microsoft.com/en-us/data/jj618307.aspx il est indiqué ...

"Cela signifie généralement que vous exécutez une application .NET 4 sans le fichier Redirect.config. Vous devez copier le fichier Redirect.config au même emplacement que migrate.exe et le renommer en tant que migrate.exe.config."

Malheureusement, je ne sais pas où se trouve Redirect.config. Le ne peut le trouver nulle part dans le contenu du répertoire du package NuGet.

0
TheMagnificent11

Quels blocs utilisez-vous dans EntLib5? Puisque vous l'appelez depuis le DAL, je suppose que vous appelez Microsoft.Practice.EnterpriseLibrary.Data.

Si tel est le cas, je tiens à souligner que j'ai toujours eu besoin de toutes les DLL suivantes pour que le DAAB EntLib5 fonctionne pour moi.

Microsoft.Practices.EnterpriseLibrary.Common
Microsoft.Practices.EnterpriseLibrary.Data
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Interception

Manquer l’une de ces références entraînera une erreur dans mon projet au moment de l’exécution, même si la compilation est bonne. 

J'essayerais également d'exécuter le programme d'installation EntLib5 à partir de http://www.Microsoft.com/en-us/download/details.aspx?id=15104 , car il colle les DLL dans le GAC.

0
Wulfram