我可以使用 AppDomain.AssemblyResolve 事件来重定向失败的程序集加载吗?

发布于 2024-08-27 22:02:32 字数 281 浏览 6 评论 0原文

默认情况下,我的应用程序引用混合模式 DLL,因此该 DLL 既是 32 位又是 64 位。在 32 位系统上,我的应用程序是 MSIL 并加载 32 位 DLL。在 64 位系统上,我的应用程序加载 64 位。

然而,在 64 位系统上,在我引用的旧版本程序集中,他们仅创建了 32 位版本。所以我无法加载这个。我正在考虑动态执行此操作,理想情况下我希望我的 MSIL 应用程序在 64 位模式下加载 32 位 DLL。这可能吗?

另外,最好将其解析为与我引用的版本不同的版本。

任何帮助表示赞赏。

By default, my application references a mixed mode DLL, so this DLL is both 32 and 64 bit. On a 32 bit system, my app is MSIL and loads the 32 bit DLL. On a 64 bit system, my app loads the 64 bit.

However on a 64 bit system, in an older version of the assembly that I am referencing, they only created a 32 bit version. So I fail to load this. I was looking at doing it dynamically, and ideally I would want my MSIL app in 64 bit mode to load the 32 bit DLL. Is this possible?

Also it would be nice to resolve it to a different version than what I have referenced as well.

Any help appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦罢 2024-09-03 22:02:32

您无法将 32 位 DLL 加载到 64 位进程中。 “任何 CPU”程序集都可以工作,因为 JIT 在执行之前处理 IL 编译,创建适当类型的本机映像; CPU 特定的程序集不支持不同类型的 JIT。

这是 Windows 限制,而不是 CLR 限制。

You cannot load 32-bit DLLs into 64-bit processes. "Any CPU" assemblies work because the JIT handles the IL compilation before execution, creating a native image of the appropriate type; CPU-specific assemblies don't support JITing to different types.

This is a Windows limitation, not a CLR limitation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文