6
votes

Comment résoudre des assemblages contradictoires dans .NET?

Dans mon application Web, j'utilise Nhibernate.dll . Cela a une dépendance à l'assemblage de recours.

'antlr3.Runtime, version = 3.1.0.39271, Culture = neutre, PublickeyToken = 3A9CAB8F8D22BFB7 '

Maintenant dans le même projet d'une autre exigence, je dois introduire antlr3stringtemplate.dll . Qui a une dépendance à une autre version de l'assemblage ci-dessus.

Si j'utilise la version de antlr3.runtime.dll qui satisfait NHibernate , antlr3stringtemplate commence à se plaindre et au vice-versa. < / p>

Comment résoudre une situation comme celle-ci?


0 commentaires

4 Réponses :


4
votes

La chose la plus simple serait de recompiler les deux contre la même version. Ou vous pouvez supprimer la spécification de version de la référence (et définir une version spécifique sur false).


0 commentaires

1
votes

Nous devions faire ce que Jim Agneau suggère. Nous avons construit des versions locales de toutes nos "bibliothèques 3ème partie" (comme nous les avons surnommés), ciblant des noms forts et des dépendances explicites (par rapport à ce que vous pourriez obtenir lorsque vous téléchargez une DLL qui dépend d'une autre). Nous avons commis ces constructions locales dans notre référentiel (subversion). Ensuite, nous avons placé les assemblées résultantes dans un dossier "dépendances / lib" sous la racine de chacun de nos projets qui dépendaient de ces assemblées. Cela nous a permis de les ajouter en tant que références vs à l'aide de ses capacités relatives de localisation de chemin.


0 commentaires

5
votes

Vous pouvez probablement utiliser l'assemblage de l'assemblage dans votre web.config pour rediriger votre version la plus récente à l'ancienne version à l'ancienne version.

Exemple: xxx

ceci va directement sous le nœud dans votre web.config.

Vous pouvez lire ici ici: http://msdn.microsoft.com/en-us /Library/2fc472t2%28Vs.71%29.aspx


0 commentaires

1
votes

J'ai eu le même problème.

a fait le travail obligatoire pour vous? P>

Je l'ai essayé comme ça, mais rien n'a changé: P>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="3a9cab8f8d22bfb7" culture="neutral" />
            <bindingRedirect oldVersion="*" newVersion="3.1.3.6002" />
            <publisherPolicy apply="no"/>
        </dependentAssembly>
    </assemblyBinding>


0 commentaires