11
votes

Comment résoudre .net dll enfer?

Comment réparer?

J'ai 2 assemblées 3ème partie, qui utilise newtonsoftjson.dll. La prise est l'une d'entre elles utilise les plus âgés 3.x.x et un autre en utilisant 4.5.x. Donc, au moment de l'exécution au moins 1 des 2 assemblages se plaint de l'autre.

Comment puis-je résoudre ce problème? Je pourrais configurer des services, mais les codes et les environnements ne sont pas actuellement mis en place de cette façon. C'est aussi trop de refactorisation que ce qui peut être fait en toute sécurité dans la quantité de temps donnée.


4 commentaires

Les deux assemblages sont-ils dans le même répertoire?


Cela peut aider: blogs.msdn.com/b/ abhinaba / archive / 2005/11/30 / 498278.aspx


Stackoverflow.com/Questtions/3158928/...


C'est pas pour Silverlight Droite? Parce que si tel est le cas, vous pouvez avoir des problèmes: Stackoverflow.com/Questtions/9947747/...


4 Réponses :


3
votes

L'article Microsoft " Versions d'assemblage de redirection " a cela à dire :

L'exemple suivant montre comment rediriger une version de myassembly à une autre et désactive la politique d'éditeur pour mysecondassemblage. xxx


2 commentaires

Pouvez-vous montrer comment faire cela donc chaque assemblage qui a une dépendance sur une version différente de Newtonsoftjson obtient la version correcte?


@ODed: Je ne peux pas. Je n'ai pas eu le temps d'explorer cela. Peut-être ce week-end.



2
votes

Typiquement, vous résolvez cela via la configuration dans votre application / Web config. Vous pouvez utiliser l'élément de sondage pour spécifier un chemin privé et mettre les deux versions dans des dossiers séparés: xxx

L'autre sens consiste à utiliser la redirection de liaison de montage. Mais cela ne fonctionnera que si vous savez que les versions sont compatibles. Puisque vous ne les utilisez pas directement, je ne sais pas que vous sachiez cela et que l'éditeur a indiqué une incompatibilité en modifiant la version de montage.


0 commentaires

4
votes

J'ai eu le problème exact avec Newtonsoft et une autre bibliothèque tierce partie. Le problème avec Newtonsoft V3.x et V4.x est que la plus récente bibliothèque est désormais avec un jeton clé. Cela a fait la solution de redirection de l'assemblage inutile; Mais c'est une solution parfaitement valide pour la plupart des autres cas.

J'ai fini par réimplémenter la bibliothèque tiers moi-même. Si vous avez accès au code source de la bibliothèque tiers, vous pouvez toujours reconstruire la bibliothèque à l'aide de la DLL NewTonsoft NewTonsoft. Vous devrez peut-être apporter des modifications mineures si l'une quelconque de la signature de méthode a changé.


1 commentaires

Concentrez-vous dans le même problème, téléchargez une petite application (juste quelques kbs) et avez besoin d'une version-cadre que je n'ai pas. Pour l'installer, vous devez la rechercher vous-même qui peut être amende dans la frustration (version de la version). C'est une petite application mais a besoin d'une allocation de conneries autour de lui. Après avoir installé le cadre, il a besoin de mises à jour (ressemblez à des mises à jour sans fin). Ce n'est pas très convivial et insensé de déployer une application. Maintenant, je comprends pourquoi Windows est-ce énorme et maintenant, je sais pourquoi il y a tant d'hommes sans poils audacieux dans le monde. Réfléchissez à deux fois pour utiliser .NET pour vos produits.



1
votes

a fini par utiliser Decompiler, ajoutez un projet à la solution, référencez les nouvelles DLL, corrigez des bugs et recompilez, pointez sur le projet récemment ajouté.

Je ne pouvais pas utiliser l'assemblage Redirection car le jeton de clé publique a changé. Apparemment, une clé différente a été utilisée pour compiler 1 des assemblages référencés. A dû recourir aux mesures les plus drastiques.


0 commentaires