64位、32位环境引用dll版本号不一致的问题

jetable 2012-06-27 01:16:26
项目A中引用一个外部DLL(External.dll),External.dll在编译时引用了另一个DLL(SomeDll64.dll,版本号2.0.1)。现在32位机器上调用,在项目A中将SomeDll64.dll替换成SomeDll32.dll(版本号3.0.1),运行时会抛异常:SomeDll的版本与找到的清单不一致之类的;是不是因为External.dll编译时使用的64位的SomeDll.dll就会将该版本号和签名写死,而不能替换成32位的SomeDll;如果不是,应该怎么样解决这个问题?(前提External.dll不能重新编译)
...全文
313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jetable 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

另外你的“前提External.dll不能重新编译”是不成立的,只要有dll,我就可以重新编译,无需源码。
[/Quote]
反编译再编译虽然可以,但是签名就不对了,项目中是无法通过的
jetable 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

External.dll在引用DLL的时候,是不是有用到名称“SomeDll64.dll”??显然名称中的64被你强制改为了32,自然就不对了,不单单签名的问题,dll本身的命名也不能被改掉。
[/Quote]
应该是没有写死名称的,因为看不了源码,但我估计这种写法应该是不会有的
jetable 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这种情况,一般都是重新编译的。在项目属性中,改一下运行平台试试……
[/Quote]
AnyCpu,没有作用的
烈火蜓蜻 2012-06-27
  • 打赏
  • 举报
回复
在配置文件里改一下引用dll的版本声明
bdmh 2012-06-27
  • 打赏
  • 举报
回复
不能直接替换为32位的,里面可能有一些不一样的吧,而且dll名字也不一样了,这样你项目中引用的dll就找不到了
qldsrx 2012-06-27
  • 打赏
  • 举报
回复
另外你的“前提External.dll不能重新编译”是不成立的,只要有dll,我就可以重新编译,无需源码。
qldsrx 2012-06-27
  • 打赏
  • 举报
回复
External.dll在引用DLL的时候,是不是有用到名称“SomeDll64.dll”??显然名称中的64被你强制改为了32,自然就不对了,不单单签名的问题,dll本身的命名也不能被改掉。
微信公众号 2012-06-27
  • 打赏
  • 举报
回复
这种情况,一般都是重新编译的。在项目属性中,改一下运行平台试试……
足球中国 2012-06-27
  • 打赏
  • 举报
回复
不能重新编译那就重新开发吧。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧