Remoting中的找不到程序集的原因之一

来源:互联网 发布:仓廪足而知礼节 编辑:程序博客网 时间:2024/05/18 03:25

在调试Remoting程序中,如果一个类型定义即出现在了客户端,也出现在了服务器端,并且位于不同的程序集中。注意,该类型可能只是名称相同,内容可以不同。此时,往往会出现“找不到***程序集”或者“***程序集不存在”的错误。

这是.Net中程序集的描述依靠元数据,而它非常依赖类型的签名。如果在Remoting两端,类型所在的程序集不相同,那么会提示上述错误。

解决办法:

在各自类型所在的程序集中,响应AssemblyResolve事件。

Thread.GetDomain().AssemblyResolve += new ResolveEventHandler(OnResolveAssembly);   

  private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
  {
   return Assembly.LoadFrom("abc.dll");
  }

其中,abc.dll即为该类型所在的程序集的名称。