web-dev-qa-db-fra.com

Erreur: Impossible de charger l'assembly log4net

Je cherche à résoudre cette erreur: 

Impossible de charger le fichier ou l'assembly 'log4net, version = 1.2.10.0, Culture = neutre, PublicKeyToken = 692fbea5521e1304' ou l'une de ses dépendances. Le système ne trouve pas le fichier spécifié. "Cette erreur se trouve dans le fichier web.config.

Lorsque je copie log4net.dll dans le répertoire bin de mon application Web, je reçois un 

Impossible de charger le fichier ou l'assembly 'log4net, version = 1.2.10.0, Culture = neutre, PublicKeyToken = 692fbea5521e1304' 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.

Cette erreur se produit également dans le fichier web.config.

Il est assez facile de changer la version et le jeton de clé publique pour qu'ils correspondent au fichier afin que l'Assembly soit chargé correctement. Lorsque je le fais, mon site Web fonctionne parfaitement, sauf lorsqu'un objet reportViewer est initialisé. Ensuite, l'erreur d'origine est renvoyée par la balise reportViewer, pas par le fichier web.config. 

Mon hypothèse est que si j'installe la version demandée de log4net.dll, mes problèmes seront résolus. Mais je ne sais pas dans quel fichier le trouver ni où le trouver. J'ai vérifié l'évidence en téléchargeant log4net 1.2.10 et en essayant chaque dll du téléchargement. 

Je dois mentionner que le site Web fonctionne sans problème sur ma machine de développement, mais pas lorsqu'il est publié sur mon serveur. 

J'utilise un site Web asp.net, .NET 4.0, IIS 7, sur un système d'exploitation Server 2008 R2. J'ai installé Crystal Reports 13.0.1 pour 64 bits (ma machine est 64 bits).

Comment puis-je résoudre ce problème?

EDIT: En réponse à la réponse de @ Kevian, j'ai modifié le fichier web.config. J'obtiens toujours l'erreur où la définition du manifeste ne correspond pas à la référence de l'assembly. Le code qui lève cette erreur est:

Line 33:     <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"   AutoDataBind="true"
Line 34:         BestFitPage="True" ToolPanelView="None" />
13
Brynne

Il y a quelques problèmes en jeu ici qui peuvent être résolus:

  1. Le jeton de clé publique de la version 32 bits de log4net.dll se heurte à celui utilisé par Crystal Reports. Pour vérifier si vous avez ce problème, effectuez une recherche sur " 692fbea5521e1304 " dans tous vos fichiers .csproj - si vous voyez des références à CrystalDecisionsETlog4net, vous avez ce problème.
  2. La version 32 bits de log4net.dll se heurte aux dll compilées pour une architecture 64 bits ou AnyCPU . Si vous avez ce problème, vous trouverez les références ci-dessous. Vous pouvez vérifier le problème en reconfigurant votre pool d'applications pour qu'il s'exécute en 32 bits et en vérifiant si l'application s'exécute. Si c'est le cas, vous avez ce problème.
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, 

PublicKeyToken = 692fbea5521e1304 , processeurArchitecture = x86 ">

Le correctif qui fonctionnait pour nous en 64 bits consistait à obtenir le dernier fichier log4net.dll contenant un nouveau PublicKeyToken, à remplacer le fichier log4net.dll dans votre dossier bin tiers,ETtout changer des références log4net.dll pour ressembler à ceci:

<Reference Include="log4net, Version=1.2.10.0, Culture=neutral,

PublicKeyToken = 1b44e1d426115821 , processeurArchitecture =MSIL">

5
neoscribe

Essayez d'ajouter ceci à votre web.config. Il indique fondamentalement au moment de l'exécution que vous êtes prêt à charger le même assemblage pour les deux versions.

  <runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="log4net" publicKeyToken="692fbea5521e1304" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

Vous devrez remplacer 1.2.10.0 par la version que vous avez réellement dans votre dossier bin.

1
kay.one

Pour votre problème, je vous recommande de supprimer/supprimer cette dll dans les références et de le réinstaller. Voici comment installer correctement Log4Net sur VS 2013:

1) Assurez-vous d’activer les sources de paquets nuget.org pour l’utilitaire de gestion de paquets NuGet en: Projet Rightclick (pas de solution), puis sélectionnez "Paquets NUGet Manague ..." en bas à gauche, sélectionnez "Paramètres", puis "Gestionnaire de paquets". sélectionnez "Sources de paquet" sous Sources de paquet disponibles. sélectionnez "nuget.org". Vérifiez également les deux "Sources de paquetage de machine-wid" et cliquez sur "OK".

2) Cela vous mènera à Gérer les paquets NUGet, puis sélectionnez "En ligne" dans le volet de gauche, puis recherchez "log4net". Il est porté depuis Apache log4j puis installez-le. C'est fait, vous le trouverez installé sous Références dans votre projet.

J'ai également joint des captures d'écran.

prendre plaisir!

 enter image description here

 enter image description here

0
Dung

J'ai eu ce problème dans mon code. L'un des projets que quelqu'un utilisait avait des conflits de version Log4Net. Ils utilisaient 12.2.10 et j'ai eu 12.2.13. Donc, pour résoudre le problème, je me suis débarrassé de ma référence et j'ai trouvé leur dll de référence. Je l'ai utilisé à la place et cela a fonctionné parfaitement.

Pour trouver une référence, Microsoft Visual Studio possède une fonctionnalité de navigateur. Vous pouvez l'utiliser pour obtenir la DLL. Pour trouver la dll, vous pouvez cliquer sur vos références dans votre projet et sur la référence que vous souhaitez trouver. Dans ce cas, Log4Net. Il affichera une liste de dépendances, l’autre log4net devrait se trouver à proximité du Log4Net sélectionné et il devrait y avoir un texte indiquant l’emplacement de la référence DLL sélectionnée. C'est ici que vous trouverez la référence. 

0
Jackstine

MSDOS

-- Create a virtual disk
subst t: C:\Windows\Assembly

-- Delete log4net x64 Assembly
del t:\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll

-- remove the virtual disk
subst t: /d
0
KhaledDev