2014-06-06 4 views
2

Lorsque vous essayez d'exécuter un échantillon MVC fourni par un fournisseur pour le test une API, je reçois l'erreur suivante:Erreur avec Log4Net: "Impossible de charger le fichier ou l'assemblage 'log4net, Version = 1.2.10.0, Culture = neutre, PublicKeyToken = null' ou l'une de ses dépendances"

[StructureMapConfigurationException: StructureMap configuration failures: Error: 170 Source: Registry: StructureMap.Configuration.DSL.Registry, StructureMap, Version=2.6.3.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223 Unable to find the exported Type's in assembly Groupdocs.Web.UI.Comparison, Version=2.0.5205.21794, Culture=neutral, PublicKeyToken=c9073b8a6a9c78c8. One or more of the assembly's dependencies may be missing.

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044) System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044) File name: 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes) at System.Reflection.RuntimeAssembly.GetExportedTypes() at StructureMap.Graph.TypePool.<>c__DisplayClass2.<.ctor>b__0(Assembly assembly)

spécifiquement faire Semble avec Log4net mais j'ai la bonne référence pour le projet et la version (1.2.10), il est intéressant lorsque je tente le même projet d'une autre machine cela fonctionne donc pas sûr de ce que le problème est réel. J'ai vérifié le GAC et il n'y a pas de références log4net.

Répondre

3

L'erreur dit: « Un ensemble fortement nommé est nécessaire »

Je pense que vous devez soit ajouter une forte clé nommée à la log4net que vous utilisez, ou supprimer une forte clé nommée de votre application.

+0

Odd. La distribution par défaut de log4net 1.2.10 ** est ** [signé avec une clé de nom fort] (http://logging.apache.org/log4net/release/faq.html#two-snks). – stuartd

+0

J'ai déjà essayé de l'ajouter au GAC et je n'ai eu aucun effet. – Rubans

2

Il doit y avoir une DLL quelque part le long de la ligne qui fait référence à une ancienne version de log4net. Vous ne pouvez pas imaginer à quelle fréquence nous rencontrons ces problèmes similaires dans notre projet. La solution est simplement de trouver tout le projet qui dépend de log4net et de mettre à jour leur version. La dernière version de log4net est 1.2.13. Il doit y avoir une DLL quelque part dans votre application qui s'appuie toujours sur une ancienne version qui est dans votre cas 1.2.10. update-package -Id log4net

primitive Cependant Handy Solution:

1 - Construire l'ensemble de la solution et assurez-vous que le projet compile avec succès et construit.

2 - Rechercher le dossier de solution (dans Visual Studio clic droit sur la solution et « Ouvrir le dossier dans l'Explorateur de fichiers ») pour toutes les instances de log4net.dll

3 - Dans votre cas, il est très probable que vous verra différentes versions de la même DLL dans votre dossier bin de projets. La comparaison de ces DLL vous mènera à la DLL qui est différente du reste de la solution.

+0

Je reçois la même erreur que ci-dessus, mais aucun de mes projets n'utilise log4net. Alors, comment puis-je savoir laquelle des bibliothèques tierces que j'ai référencées utilise log4net? – Pawan

+0

@pawan: J'ai mis à jour ma réponse pour votre information. – MHOOS

1

Dans config vous vous n'avez pas le jeton de clé publique spécifiée, vérifiez si votre configuration contient:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, 
          Version=1.2.10.0, Culture=neutral, PublicKeyToken=1B44E1D426115821"/> 

Cela va charger l'ensemble log4net par son nom fort.

Questions connexes