一个.Net进程中的不同平台AppDomains?
Posted
技术标签:
【中文标题】一个.Net进程中的不同平台AppDomains?【英文标题】:Different platform AppDomains in one .Net process? 【发布时间】:2010-11-15 16:14:36 【问题描述】:我很感兴趣:我可以将 32 位 x86 dll 作为第二个 AppDomain 加载到 64 位应用程序环境中吗?
更多详情:
1) 主 exe 是 64 位 C# 纯 .net 4 应用程序;
2) 模块是一些非托管 x86 dll 的第三方 .net 2.0 包装器;
那么我可以在 64 位 .net 4 进程中创建第二个 32 位 AppDomain 并将 32 位模块加载到新创建的 32 位 AppDomain 中吗?然后在默认的 64 位 AppDomain 和第二个 32 位 AppDomain 之间编组?
感谢您的建议!
【问题讨论】:
当你尝试它会发生什么? 异常 System.BadImageFormatException 发生在 kernelbase.dll ;) 【参考方案1】:这是不可能的,bitness 是一个进程属性,而不是 appdomain 属性。要完成这项工作,您需要在单独的进程中加载该 DLL。使用标准的 .NET IPC 机制与之对话。命名管道、套接字、远程处理、WCF。或者强制平台目标设置为 x86。
【讨论】:
以上是关于一个.Net进程中的不同平台AppDomains?的主要内容,如果未能解决你的问题,请参考以下文章
当从外部线程调用时,.net 单元测试崩溃并显示“无法通过 AppDomains 传递 GCHandle”