Message d’erreur ‘Impossible de charger un ou plusieurs types requirejs. Récupérez la propriété LoaderExceptions pour plus d’informations. ‘

J’ai développé une application utilisant Entity Framework , SQL Server 2000, Visual Studio 2008 et Enterprise Library.

Cela fonctionne parfaitement bien localement, mais quand 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érer la propriété LoaderExceptions pour plus d’informations

Trace de trace: sur 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)

at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (assembly Assembly, Boolean loadReferencedAssemblies, Dictionary 2 knownAssemblies, Dictionary 2 & typesInLoading, List`1 & erreurs)

at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, Assembly Assembly, Boolean loadReferencedAssemblies)

à System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (type de type)

at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (type de type, Assembly callingAssembly)

at System.Data.Objects.ObjectContext.CreateQuery [T] (parameters ssortingng querySsortingng, ObjectParameter [])

Entity Framework semble avoir un problème, des pistes pour résoudre le problème?

J’ai résolu ce problème en définissant l’atsortingbut Copy Local des références de mon projet sur true.

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 assembly chargé dynamicment manque un assembly référencé. Cet assemblage doit être dans le répertoire bin de votre application.

Utilisez ce code pour déterminer ce qui manque.

 using System.IO; using System.Reflection; using System.Text; try { //The code that causes the error goes here. } catch (ReflectionTypeLoadException ex) { SsortingngBuilder sb = new SsortingngBuilder(); foreach (Exception exSub in ex.LoaderExceptions) { sb.AppendLine(exSub.Message); FileNotFoundException exFileNotFound = exSub as FileNotFoundException; if (exFileNotFound != null) { if(!ssortingng.IsNullOrEmpty(exFileNotFound.FusionLog)) { sb.AppendLine("Fusion Log:"); sb.AppendLine(exFileNotFound.FusionLog); } } sb.AppendLine(); } ssortingng errorMessage = sb.ToSsortingng(); //Display or log the error based on your application. } 

Une solution qui a fonctionné pour moi était de supprimer les dossiers bin / et obj / et de reconstruire la solution.

Deux solutions possibles:

  1. Vous comstackz en mode Release mais déployez une ancienne version compilée à partir de votre répertoire Debug (ou vice versa).
  2. Vous ne disposez pas de la version correcte du .NET Framework dans votre environnement de test.

Comme cela a été mentionné précédemment, il arrive généralement qu’une assemblée ne soit pas présente.

Pour savoir exactement quel assemblage vous manque, attachez votre débogueur, définissez un point d’arrêt et, lorsque vous verrez l’object exception, accédez à la propriété ‘LoaderExceptions’. L’assemblée manquante devrait être là.

J’espère que cela aide!

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). Une fois déployé sur le serveur ( Windows Server 2008 R2 SP1), il fonctionnerait jusqu’à ce que la session expire. Nous allions donc déployer l’application et tout allait bien, puis le laisser pour plus que le délai de session de 20 minutes, puis cette erreur serait 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 est exécutée. Vous pouvez le trouver dans le package redissortingbuable Microsoft Report Viewer 2010 disponible sur le site de téléchargement Microsoft.

Veillez à autoriser les applications 32 bits sur IIS si vous avez déployé sur IIS. Vous pouvez définir cela sur les parameters de votre pool d’applications actuel.

Si vous utilisez EntityDataSource dans votre projet, la solution est la suivante : ‘Impossible de charger une ou plusieurs erreurs des types requirejs’ . Vous devez définir le ContextTypeName = “ProjectNameNameSpace.EntityContainerName” ‘

Cela a résolu mes problèmes …

Au début, j’ai essayé le visualiseur de journaux Fusion, mais cela n’a pas aidé, j’ai donc fini par utiliser WinDbg avec l’extension SOS.

! dumpheap -stat -type Exception / D

Ensuite, j’ai examiné les exceptions FileNotFoundExceptions. Le message dans l’exception contenait le nom de la DLL qui ne se chargeait pas.

NB, le / D vous donne des résultats hyperliés, alors cliquez sur le lien dans le résumé pour FileNotFoundException. Cela fera apparaître une liste des exceptions. Cliquez ensuite sur le lien pour l’une des exceptions. Ce sera! Dumpobject cette exceptions. Ensuite, vous devriez juste pouvoir cliquer sur le lien Message dans l’object exception et vous verrez le texte.

Une autre solution pour savoir pourquoi rien ne fonctionne exactement (à partir de Microsoft Connect):

  1. Ajoutez ce code au projet:

     foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { asm.GetTypes(); } 
  2. Désactivez les assemblages de sérialisation de génération.

  3. Construire et exécuter

La solution consistait à vérifier l’exception LoaderException: dans mon cas, certains des fichiers DLL étaient manquants.

Entrez la description de l'image ici

Mon instance de ce problème a fini par être une référence manquante. Un assembly a été référencé dans le fichier app.config mais n’a pas de référence dans le projet.

Ajouter mon problème / solution spécifique à ceci 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 seconde application dans le dossier de ma première application dans IIS . Les deux définissaient une chaîne de connexion portant le même nom, ce qui entraînait un conflit entre l’application enfant et la génération de ce message d’erreur non évident. Il a été résolu en ajoutant:

  

dans le bloc de chaîne de connexion de l’application Web enfant qui l’empêchait d’hériter les chaînes de connexion des fichiers web.config plus haut dans la hiérarchie, de sorte qu’il ressemble à ceci:

     

Une question de Stack Overflow de référence qui m’a aidé une fois que j’ai déterminé ce qui se passait. Une application enfant héritera-t-elle de son parent web.config? .

Cela a fonctionné pour moi. Ajoutez-le dans votre web.config

   

J’avais une application Web .NET 4.0, ASP.NET MVC 2.0, Entity Framework 4.0 développée dans Visual Studio 2010. J’avais le même problème, à savoir qu’il 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, jetant la 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 que je puisse exécuter! Dumpheap.

Eh bien, il s’avère que l’installation de Windows SDK v7.1 (x64) a résolu le problème. Toute dépendance manquante doit avoir été incluse dans le SDK. Il peut être téléchargé à partir de Microsoft Windows SDK pour Windows 7 et .NET Framework 4 .

Si vous utilisez Entity Framework , essayez de copier les références suivantes localement.

  • System.Data.Entity
  • System.Web.Entity

Modifiez la propriété “Copy Local” en “True” pour ces références et publiez.

D’autres suggestions sont toutes bonnes. Dans mon cas, le problème était que la boîte de développement é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.

J’ai changé la propriété de version spécifique de la réfrence à false et cela a aidé.

J’avais le même problème (mais sur ma version locale) lorsque j’essayais d’append la migration Entity Framework avec la console Gestionnaire de packages.

La façon dont je l’ai résolu était en créant une application console où Main () avait le code suivant:

  var dbConfig = new Configuration(); var dbMigrator = new DbMigrator(dbConfig); dbMigrator.Update(); 

Assurez-vous que la classe de configuration est la configuration de migration de votre projet défaillant. 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.

J’ai eu ce problème lorsque j’ai installé un package NuGet sur l’un des projets et j’ai oublié de mettre à jour l’autre projet.

J’ai résolu ce problème en faisant en sorte que les deux projets aient le même ensemble de référence.

Mon problème a été résolu après avoir supprimé les fichiers d’assemblage redondants du dossier bin .

Si aucune des autres réponses ne vous aide:

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 de InstallUtil.exe. Veillez donc à utiliser la bonne version de InstallUtil pour la plate-forme que vous avez créée.

Définissez le mode IIS 32 bits sur true, le mode de débogage sur true dans le fichier de configuration, en supprimant le répertoire temp et en réinitialisant IIS au problème dans le temps et il revient après un certain temps.

Vérifiez que chacun de vos projets est correctement configuré dans Configuration Manager .

Semblable à la raison de William Edmondson pour ce problème, j’ai changé mon paramètre Configuration Manager de “Debug” “N’importe quelle 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 (alors que d’autres étaient à jour). Cela a causé de nombreux problèmes avec le démarrage de l’application.

La solution temporaire consistait à faire la suggestion de Kenny Eliasson de nettoyer les répertoires \ bin et \ obj. Cependant, dès que j’aurais apporté plus de modifications aux projets non compilés, tout échouerait à nouveau.

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 deux versions de MS Office, 2013 et 2016. Je désinstalle MS Office 2013, puis il fonctionne.

Je construis quelques projets pour SharePoint et, bien sûr, les déploie. Une fois c’est arrivé.

J’ai trouvé un ancien assemblage dans C: \ Windows \ assembly \ temp \ xxx (avec FarManager), l’a supprimé après le redémarrage et tous les projets ont été générés.

J’ai une question pour MSBuild, car dans les assemblys de projets liés comme des projets et que chaque assemblage est marqué “Copie locale”, mais pas à partir du GAC.

J’ai eu le même message d’erreur signalé lors de la compilation d’un package Visual Studio (VSPackage). La solution entière comstack et l’erreur est levée lorsque le package est créé par CreatePkgDef. Cela dit, il est clair que je ne peux pas détecter les LoaderExceptions, car ce n’est pas mon application qui le lance, mais l’outil de Microsoft. (Bien que je suis responsable de la confusion de CreatePkgDef.)

Dans mon cas, la cause principale était que ma solution crée un fichier MyDll.dll qui a déjà été enregistré dans le GAC (et ils sont différents), de sorte que CreatePgkDef se soit trompé quant à savoir lequel utiliser et il a simplement décidé de lancer une erreur. t vraiment utile Le fichier MyDll.dll du GAC a été enregistré par l’installateur du même produit (évidemment une version antérieure, avec / légèrement / un contenu différent).

Comment le réparer

  1. Méthode préférée: assurez-vous que vous utilisez la version correcte de MyDll.dll
    1. Lors de la compilation de votre projet, assurez-vous d’utiliser un numéro de version différent de celui de la version précédente du GAC. Assurez-vous que les atsortingbuts suivants sont corrects:
      • [assembly: AssemblyVersion (“1.0.0.1”)] // En supposant que l’ancien fichier DLL était versionné 1.0.0.0
      • [assembly: AssemblyFileVersion (“1.0.0.1”)] // En supposant que l’ancien fichier DLL était versionné 1.0.0.0
    2. Si nécessaire, spécifiez le nom complet de l’assembly (par exemple, “MyDll.dll, Version = 1.0.0.1, Culture = neutral, PublicKeyToken = 1234567890abcdef”) lorsque vous le référencez dans vos autres projets.
  2. En cas d’échec, vous pouvez désinstaller l’ancien fichier MyDll.dll de GAC.
    1. Comment désinstaller un assemblage du GAC
    2. Désinstallez l’application qui inclut MyDll.dll

Changer la AssemblyVersion était suffisant pour moi. 🙂

J’espère que cela a été utile.

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.

J’ai eu un problème avec automap. Dans le dossier bin , le fichier automap.4net.dll était présent, mais pour une raison quelconque, automap.xml et automap.dll ne l’étaient pas. Les copier dans le répertoire bin résolu le problème.

Je mettais à jour un site Web via FTP. Je suppose que le site Web était en cours d’utilisation et que, lorsque vous tentez de mettre à jour le dossier bin, certains fichiers DLL doivent avoir été verrouillés et n’ont pas été mis à jour.

Là, j’ai vu la page d’erreur 500 et le réglage du mode customErrors sur Off, j’ai vu le message d’erreur mentionné par l’OP.

Le problème était que je n’ai pas vu les échecs répertoriés dans le programme FTP. J’ai réessayé que ces échecs ont échoué et ils ont téléchargé. Le dernier fichier DLL mis à jour Le site a donc fonctionné.