gpt4 book ai didi

.net - 使用外部程序集 : The located assembly's manifest definition does not match the assembly reference

转载 作者:行者123 更新时间:2023-12-01 00:02:25 26 4
gpt4 key购买 nike

我知道这个问题似乎在 stackoverflow 和网络上都得到了回答,但我的问题是不同的。

当我有以下设置时,我试图了解如何不使用 GAC(老板说不):

该项目使用 NHibernate 和 Antlr3.Stringtemplate
两者都是第三方程序集。
NHibernate 引用了 Antlr3.Runtime 版本 3.1.3.42154
Antlr3.Stringtemplate 引用了 Antlr3.Runtime 版本 3.3.1.7705

当另一个不可用时,一个会出错。

我尝试绑定(bind)重定向,但这不起作用,因为版本之间的 publicKeyToken 不同。它最终寻找具有与 3.1.3.42154 版本匹配的公钥 token 的 3.3.17705。

在 GAC 中安装一个或两个都可以。但是,我的老板不会让我在 GAC 中安装任何东西。

我还尝试将两个 DLL 都放在 BIN 目录中,方法是包含一个带有版本 3.1.3.42154 文件夹的 Lib 项目。
我告诉它总是复制,所以我得到/bin/Lib/3.1.3.42154/Antlr.Runtime.dll
然后我添加了一个探测元素来探测那个目录。
这不起作用,我得到了同样的错误。

如何使用引用另一个第三方程序集的第三方程序集,两者都引用不同的版本?

更新:

    System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime.dll"); // 3.3.1        
System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime\Antlr3.Runtime.dll"); // 3.1.3

AppDomain.CurrentDomain.GetAssemblies() 显示版本已加载到应用程序域中,但是仍然错误提示找不到 thta 3.1.3。

以下是在调用错误代码之前从 AppDomain.CurrentDomain.GetAssemblies() 加载的内容。前两行是 GetAssemblies() 中的内容,第三行是错误所说的缺失内容。
{Antlr3.Runtime, Version=3.3.1.7705, Culture=neutral, PublicKeyToken=eb42632606e9261f}
{Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7}
Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7

最佳答案

解决了这个问题。

这是使用 Antlr3.StringTemplate 的特定问题
制作 stringtemplate 的人实际上下载了 antlr 的源代码并用他的应用程序构建了它,而不是分发原始的 antlr dll。他的新antlr dll名称相同,但签名不同。他更改了版本和它的公钥 token 。因此,如果您尝试将原始版本与 NHibernate 之类的东西一起使用,则会导致非常严重的冲突。

所以解决方案是使用 ILMerge将他的自定义 Antlr3 DLL 合并到 string.template DLL 中,以使 string.template dll 只依赖于自身。我将 Antlr3.Runtime.dll、Antlr3.StringTemplate.dll 和 Antlr3.Runtime.Debug.dll 合并为一个 DLL Antlr3.StringTemplate.dll

这消除了所有 DLL 冲突,并且我能够包含 nhibernate 需要的 Antlr3.Runtime.dll。制作 stringtemplate 的人也应该以这种方式分发他的包。

关于.net - 使用外部程序集 : The located assembly's manifest definition does not match the assembly reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com