谁动了我的assembly?
你有没有曾经把.NET的用对象变成过COM对象?你有没有用过.NET Remoting?那你有没有两者同时用呢?如果你有,可能你也遇过同一个问题。.NET抱怨说,找不到要序列化的Assembly。因为COM对象被执行的时候,其所处的位置是宿主的位置,而不是Assembly所在的位置了。由于Binary Formatter查询Assembly的一个小问题,导致了这个错误信息。在MSDN论坛上抄来如下代码,解决了问题:
private static Assembly CurrentDomain_AssemblyResolve(object sender,
ResolveEventArgs args)
{
Assembly ayResult = null;
string sShortAssemblyName = args.Name.Split(',')[0];
Assembly[] ayAssemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ayAssembly in ayAssemblies)
{
if (sShortAssemblyName == ayAssembly.FullName.Split(',')[0])
{
ayResult = ayAssembly;
break;
}
}
return ayResult;
}
把这段代码注册到Current Domain的AssemblyResolve事件上。注册的最佳时机是静态构造函数:
static YourClass()
{
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
希望上天保佑我们的奶酪不会再被乱动了。
分享到:
相关推荐
### .NET Remoting 学习笔记 #### 一、概念 .NET Remoting 是一种用于分布式对象通信的技术,它允许在不同的应用程序域之间进行对象交互。简单来说,它是一种升级版的 DCOM(分布式组件对象模式),针对 .NET 平台...
C# Remoting是一种在.NET Framework 2.0中实现分布式应用程序的技术,它允许对象在不同的应用程序域(AppDomains)之间进行交互,甚至可以跨越网络。这个"聊天室"项目是利用C# Remoting来创建一个客户端-服务器架构...
Remoting技术是.NET框架中的一种远程通信机制,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至是跨越网络。这项技术对于构建分布式应用程序、实现服务器组件的透明调用非常有帮助。在这个"remoting...
当网络连接中断时,需要有机制来检测这种情况并采取适当的措施。这通常通过监听网络连接状态的变化来实现。例如,可以使用System.Net.NetworkInformation命名空间中的类,如NetworkChange或NetworkInterface,来注册...
Remoting是.NET Framework提供的一种远程通信技术,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至跨越网络。这个“使用Remoting编写聊天程序”的主题,将深入讲解如何利用Remoting构建一个简单的...
Remoting TCP双向通信是一种在分布式系统中实现高效、可靠数据交换的技术。在.NET框架中,Remoting提供了一种跨进程甚至跨计算机的通信机制,允许对象在不同的应用程序域(AppDomain)之间透明地调用方法。TCP...
C# Remoting是.NET Framework提供的一种机制,它允许在不同应用程序域(AppDomains)之间进行对象的透明通信,甚至跨越不同的进程或机器。这个“c# remoting简单例子”旨在帮助初学者理解Remoting的基本概念和工作...
Remoting双向通信是一种在.NET Framework中实现客户端与服务器之间高效、灵活的数据交换技术。这个"Remoting双向通信v1.0"可能是一个实现双向通信的软件包或框架,旨在简化远程对象调用的过程,使应用程序能够实时地...
Remoting服务是.NET框架中的一种高级通信机制,它允许对象在不同的进程甚至不同的计算机之间进行交互,仿佛它们是在同一环境中。这个技术的核心理念是透明性,即开发者无需关心对象的实际位置,只需像调用本地对象...
C# .Net Remoting 两个简单示例,一个为普通的,一个为工厂模式的,更为安全一点.简单范例却是打好了一个框架,想要做东西,扩展就可以了. 使用说明和运行截图:http://www.our-code.com/news/2010105/n4920152.html 关于2...
.NET Remoting是微软.NET框架提供的一种技术,用于在不同的应用程序域(AppDomain)之间进行通信,无论是同一台机器上的还是跨网络的。这种技术在分布式系统开发中扮演着重要角色,使得不同进程甚至不同计算机之间的...
VB.NET Remoting是微软.NET Framework中的一个重要特性,它允许开发者创建可以跨进程甚至跨网络通信的对象。这个技术的核心思想是使对象能够在不同的应用程序域(AppDomain)之间共享和交互,从而打破了传统对象只能...
6. **容错和恢复机制**:当客户端断线或者出现故障时,服务端需要有机制来处理这种情况,比如重新发送事件或通知新的订阅者。 在实际应用中,服务端广播改进对于构建大型分布式系统至关重要。例如,在实时系统中,...
VB.NET Remoting是.NET Framework提供的一种强大的分布式计算技术,它允许对象在不同的应用程序域(AppDomain)之间进行通信,甚至可以跨越网络。本手册将深入探讨这一技术,帮助开发者理解和应用VB.NET Remoting来...
本系列文章将简单介绍Remoting的一些基本概念,包括 应用程序域、Remoting构架、传值封送(Marshal by value)、传引用封送(Marshal by reference)、Remoting的基本操作、分离服务程序元信息和实现、在Windows Service...
VB.NET Remoting是.NET框架中的一种核心技术,它允许在不同应用程序域(AppDomain)之间进行对象间的通信,甚至是跨越网络的通信。这个技术为分布式应用提供了强大的基础,使得开发者能够构建可扩展、高性能且安全的...
**C# Remoting 入门示例** C# Remoting是.NET Framework中提供的一种技术,它允许对象在不同的应用程序域(AppDomain)之间进行通信,甚至可以跨越不同的进程或网络。这种技术对于分布式系统和多层应用开发尤其有用...