J'ai développé une application utilisant Entity Framework , SQL Server 2000, Visual Studio 2008 et Enterprise Library.
Cela fonctionne parfaitement bien localement, mais lorsque je déploie le projet dans notre environnement de test, j'obtiens l'erreur suivante:
Impossible de charger un ou plusieurs des types demandés. Récupérez la propriété LoaderExceptions pour plus d'informations
Trace de pile: à System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)
à System.Reflection.Assembly.GetTypes ()
à System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (contexte LoadingContext)
à System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (contexte LoadingContext)
sur System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (assembly Assembly, Boolean loadReferencedAssemblies, Dictionary
2 knownAssemblies, Dictionary
2 & typesInLoading, List`1 & errors)à System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies)
à System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Type type)
sur System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (Type de type, Assembly callingAssembly)
sur System.Data.Objects.ObjectContext.CreateQuery [T] (paramètres string queryString, ObjectParameter [])
Entity Framework semble avoir un problème, un indice sur la façon de le résoudre?
la source
Réponses:
J'ai résolu ce problème en définissant l'attribut Copy Local des références de mon projet sur true.
la source
Cette erreur n'a pas de vraie réponse magique. La clé est d'avoir toutes les informations pour comprendre le problème. Il est fort probable qu'un assemblage chargé dynamiquement manque un assemblage référencé. Cet assembly doit se trouver dans le répertoire bin de votre application.
Utilisez ce code pour déterminer ce qui manque.
la source
throw new Exception(errorMessage);
, l'espoir aide quelqu'un.Une solution qui a fonctionné pour moi a été de supprimer les dossiers bin / et obj / et de reconstruire la solution.
la source
Deux solutions possibles:
la source
Comme cela a été mentionné précédemment, c'est généralement le cas d'une assemblée qui n'est pas là.
Pour savoir exactement quel assembly vous manque, attachez votre débogueur, définissez un point d'arrêt et lorsque vous voyez l'objet d'exception, accédez à la propriété «LoaderExceptions». L'assemblage manquant devrait être là.
J'espère que cela aide!
la source
La solution consistait à vérifier l'exception LoaderException: dans mon cas, certains fichiers DLL étaient manquants.
la source
Assurez-vous d'autoriser les applications 32 bits sur IIS si vous avez déployé sur IIS. Vous pouvez définir cela sur les paramètres de votre pool d'applications actuel.
la source
J'ai rencontré cette erreur avec une application ASP.NET 4 + SQL Server 2008 R2 + Entity Framework 4.
Cela fonctionnerait bien sur ma machine de développement (Windows Vista 64 bits). Ensuite, une fois déployé sur le serveur ( Windows Server 2008 R2 SP1), cela fonctionnerait jusqu'à l'expiration de la session. Donc, nous déployions l'application et tout semblait bien, puis nous la laissions plus de 20 minutes avant l'expiration de la session, puis cette erreur était levée.
Pour le résoudre, j'ai utilisé ce code sur le blog de Ken Cox pour récupérer la propriété LoaderExceptions.
Pour ma situation, la DLL manquante était
Microsoft.ReportViewer.ProcessingObjectModel
(version 10). Cette DLL doit être installée dans le GAC de la machine sur laquelle l'application s'exécute. Vous pouvez le trouver dans le package redistribuable Microsoft Report Viewer 2010 disponible sur le site de téléchargement Microsoft.la source
Au départ, j'ai essayé la visionneuse de journaux Fusion, mais cela n'a pas aidé alors j'ai fini par utiliser WinDbg avec l'extension SOS.
! dumpheap -stat -type Exception / D
Ensuite, j'ai examiné les FileNotFoundExceptions. Le message dans l'exception contenait le nom de la DLL qui n'était pas en cours de chargement.
NB, le / D vous donne des résultats avec un lien hypertexte, alors cliquez sur le lien dans le résumé de FileNotFoundException. Cela fera apparaître une liste des exceptions. Cliquez ensuite sur le lien pour l'une des exceptions. Cela va! Dumpobject que les exceptions. Ensuite, vous devriez juste être en mesure de cliquer sur le lien pour Message dans l'objet d'exception, et vous verrez le texte.
la source
Si vous utilisez EntityDataSource dans votre projet, la solution est dans le correctif: «Impossible de charger un ou plusieurs des types demandés» Erreurs . Vous devez définir le ContextTypeName = "ProjectNameNameSpace.EntityContainerName" '
Cela a résolu mes problèmes ...
la source
Mon instance de ce problème a fini par être une référence manquante. Un assembly était référencé dans app.config mais n'avait pas de référence dans le projet.
la source
Si vous utilisez Entity Framework , essayez de copier localement les références suivantes.
Remplacez la propriété «Copier local» par «Vrai» pour ces références et publiez.
la source
Une autre solution pour savoir pourquoi rien ne fonctionne exactement (depuis Microsoft connect):
Ajoutez ce code au projet:
Désactivez les assemblys de sérialisation de génération.
la source
J'ai eu une application Web .NET 4.0, ASP.NET MVC 2.0, Entity Framework 4.0 développée dans Visual Studio 2010. J'ai eu le même problème, cela fonctionnait sur un serveur Windows Server 2008 R2 mais pas sur un autre serveur Windows Server 2008 R2, même si les versions de .NET et ASP.NET MVC étaient les mêmes, lançant cette même erreur que la vôtre.
Je suis allé suivre la suggestion de miko, j'ai donc installé Windows SDK v7.1 (x64) sur le serveur défaillant, afin de pouvoir exécuter! Dumpheap.
Eh bien, il s'avère que l'installation du SDK Windows v7.1 (x64) a résolu le problème. La dépendance manquante doit avoir été incluse dans le SDK. Il peut être téléchargé à partir du SDK Microsoft Windows pour Windows 7 et .NET Framework 4 .
la source
Ajouter mon problème / solution spécifique à cela car c'est le premier résultat pour ce message d'erreur. Dans mon cas, l'erreur a été reçue lorsque j'ai déployé une deuxième application dans le dossier de ma première application dans IIS . Les deux définissaient une chaîne de connexion avec le même nom, ce qui entraînait un conflit dans l'application enfant et générait à son tour ce message d'erreur non évident. Il a été résolu en ajoutant:
dans le bloc de chaînes de connexion de l'application Web enfant, ce qui l'a empêchée d'hériter des chaînes de connexion des fichiers web.config plus haut dans la hiérarchie.
Une question de référence sur le débordement de pile qui m'a aidé une fois que j'ai déterminé ce qui se passait était une application enfant hériterait-elle de son parent web.config? .
la source
Cela a fonctionné pour moi. Ajoutez-le dans votre web.config
la source
It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Mon problème a été résolu après avoir supprimé les fichiers d'assemblage redondants du
bin
dossier.la source
Au cas où aucune des autres réponses ne vous aiderait:
Lorsque j'ai eu ce problème, il s'est avéré que mon service Windows était conçu pour une plate-forme x64 et que j'exécutais par inadvertance la version 32 bits d'InstallUtil.exe. Assurez-vous donc que vous utilisez la bonne version d'InstallUtil pour la plate-forme pour laquelle vous avez construit.
la source
D'autres suggestions sont toutes bonnes. Dans mon cas, le problème était que la boîte de développeur était une machine 64 bits utilisant l'emplacement x86 de diverses API, y compris Silverlight .
En modifiant la plate-forme cible pour qu'elle corresponde au serveur 32 bits sur lequel l'application Web était déployée, la plupart des erreurs liées à l'impossibilité de charger un ou plusieurs des types demandés ont été supprimées.
la source
J'ai changé la propriété de version spécifique des réfrences à false et cela a aidé.
la source
J'ai eu le même message d'erreur signalé lors de la compilation d'un package Visual Studio (VSPackage). La solution entière se compile et l'erreur est levée lorsque le package est créé par CreatePkgDef. Cela dit, il est clair que je ne peux pas intercepter les LoaderExceptions car ce n'est pas mon application qui le lance, mais le propre outil de Microsoft. (Bien que je sois responsable de la confusion de CreatePkgDef.)
Dans mon cas, la cause principale était que ma solution crée un MyDll.dll qui a déjà été enregistré auprès du GAC (et ils sont différents), donc le CreatePgkDef a confondu lequel utiliser et il a décidé de simplement lancer une erreur qui n'est pas '' t vraiment utile. Le MyDll.dll dans le GAC a été enregistré par l'installateur du même produit (évidemment une version antérieure, avec un contenu / légèrement / différent).
Comment le réparer
Changer la version d'Assembly était assez bon pour moi. :)
J'espère que cela a été utile.
la source
J'ai eu le même problème (mais sur mon local) lorsque j'essayais d'ajouter la migration Entity Framework avec Package Manager Console.
J'ai résolu le problème en créant une application console où Main () avait le code suivant:
Assurez-vous que la classe Configuration est la configuration de migration de votre projet en échec. Vous aurez besoin de System.Data.Entity.Migrations pour utiliser DbMigrator.
Définissez un point d'arrêt dans votre application et exécutez-le. L'exception doit être interceptée par Visual Studio (sauf si vous avez défini ce type d'exception pour ne pas interrompre la session de débogage), et vous devriez pouvoir trouver les informations que vous recherchez.
La référence manquante dans mon cas était EFProviderWrapperToolkit.
la source
J'ai eu ce problème lorsque j'ai installé un package NuGet sur l'un des projets et oublié de mettre à jour l'autre projet.
J'ai résolu ce problème en créant simplement les deux projets ayant le même assemblage de référence.
la source
Cela m'est arrivé aussi. J'ai résolu le problème comme suit: Cliquez avec le bouton droit sur Solution, Gérez les packages NuGet pour la solution ... Consolidez les packages et mettez à niveau les packages pour qu'ils soient dans la même version.
la source
Définissez le mode IIS 32 bits sur true, le mode de débogage sur true dans le fichier de configuration, la suppression du
temp
répertoire et la réinitialisation d'IIS corrige le problème temporairement et il revient après un certain temps.la source
Vérifiez que chacun de vos projets est correctement installé dans Configuration Manager .
Semblable à la raison de William Edmondson pour ce problème, j'ai changé mon paramètre Configuration Manager de "Debug" "Any CPU" à "Debug" ".NET". Le problème était que la version ".NET" n'était PAS configurée pour générer TOUS les projets, donc certaines de mes DLL étaient obsolètes (tandis que d'autres étaient à jour). Cela a causé de nombreux problèmes lors du démarrage de l'application.
Le correctif temporaire consistait à faire la suggestion de Kenny Eliasson de nettoyer les répertoires \ bin et \ obj. Cependant, dès que j'apportais plus de modifications aux projets non compilables, tout échouait à nouveau.
la source
J'ai également rencontré ce problème lors de la création d'un nouveau complément Microsoft Word avec Visual Studio 2015. Le problème concerne la présence de 2 versions de MS Office, 2013 et 2016. Je désinstalle MS Office 2013, puis cela fonctionne.
la source
Je construis quelques projets pour SharePoint et, bien sûr, je les déploie. Une fois, c'est arrivé.
J'ai trouvé un ancien assembly dans C: \ Windows \ assembly \ temp \ xxx (avec FarManager), je l'ai supprimé après le redémarrage et tous les projets ont été créés.
J'ai une question pour MSBuild, car dans les assemblys de projet liés comme des projets et chaque assembly est marqué "Copier local", mais pas du GAC.
la source
Je suis en mesure de résoudre ce problème en marquant "Copy Local = True" sur tous les fichiers DLL référencés dans le projet, en reconstruisant et en déployant sur un serveur de test.
la source
J'ai eu un problème avec Automap. Dans le
bin
dossier, le fichier automap.4net.dll était là, mais pour une raison quelconque, automap.xml et automap.dll ne l'étaient pas. Les copier dans lebin
répertoire a résolu le problème.la source