我有一段 .NET 代码,由于各种原因(可靠性、部署)必须在单独的 AppDomain 中运行。我创建了一个从 MBR 派生的代理对象,它将调用委托给真实的东西,因此它不会加载到当前的 AppDomain 中。我通过通常的 CreateInstanceAndUnwrap 创建代理。
this.eDirectCommunication = (EDirectCommunicationProxy) this.appDomain.CreateInstanceAndUnwrap(x, y);
当我从 .NET 客户端使用它时,这很有效,但是当从 COM 客户端加载时,转换失败。我无法从透明代理进行投射。我验证了所需的类型是在所需的 AppDomain 上创建的,并且 Unwrap 成功,只是强制转换失败。有趣的是,当两个 AppDomain 具有相同的基目录时,它确实有效,这表明程序集绑定失败。但是 Fusion 日志查看器没有提到任何问题。