Le référencement de 2 versions différentes de log4net dans la même solution
Je suis en utilisant NHibernate 2.1.2.400 qui fait référence à log4net 1.2.10.0.
Dans le même projet, j'utilise aussi la simple comptable SDK, malheureusement il est encore à l'aide de log4net 1.2.9.0.
Afin que je puisse obtenir NHibernate de travailler si je de référence log4net 1.2.10.0 mais la simplySDK ne fonctionnent pas. Et vice versa...
Je devine que la plupart des problèmes viennent du fait que log4net a changé sa clé de montage. J'ai essayé à l'aide d'une liaison de redirection sans succès: les 2 Dll ne pas avoir la même clé.
Je suis en train d'étudier la recompilation de NHibernate pour utiliser log4net 1.2.9.0 mais il semble que la mauvaise chose à faire et mon sentiment est que, tout Simplement, de la Comptabilité ne sera pas mise à jour de son kit de développement pour l'utilisation log4net 1.2.10.0 de sitôt.
Quelle est la meilleure façon de gérer cela? Est-il possible de résoudre tous les?
- J'ai une question très semblable à stackoverflow.com/questions/1744543/... j'ai eu recours à la recompilation. Je suppose que c'est l'avènement de dll-l'enfer, v2.0.
- lors de la vérification de votre question, j'ai trouvé stackoverflow.com/questions/2460542/2461746#2461746 qui a résolu mon problème.
- Super! J'avais été me demandais à propos de faire de la CLR regarder dans différents endroits et les
href
attribut semble faire l'affaire. Merci pour cette remarque!
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution en utilisant ce réponse à une question similaire
Vous créer 2 dossiers dans votre projet, un pour chaque version de log4net. Placez chaque log4net.dll dans son dossier correspondant par l'ajout d'un fichier à la solution (pas avec ajout de la référence). Vous pouvez définir la copie vers le répertoire de sortie des biens de copier toujours de sorte qu'il est automatiquement copié dans le dossier de sortie lorsque vous générez.
Puis vous modifier l'application.fichier de configuration en ajoutant quelque chose comme ceci:
vous pouvez obtenir le jeton de clé publique d'un assemblage en utilisant sn -T [assemblyName]
Vous pouvez ajouter une exclusion à la base de registre. Ajoutez simplement ces touches:
Cela rendra le .net runtime ignorer la validation de la liste des assemblées. En théorie, cela est un problème de sécurité, mais depuis que la clé privée est l'ouverture de toute façon, il n'y a pratiquement aucun impact.
Si contraignant la redirection ne fonctionne pas et le simple comptable SDK est closed source, une solution possible est de recompiler NHibernate pour utiliser log4net 1.2.9.0.