Assembly.LoadFrom加载程序集类型转换失败解决方法

简介: 为了让我的wcf模块框架支持自定义通道上下文,对代码又进行了一次小型的重构,测试时发现类型转换的错误,最后发现是loadfrom引起的。如果向 loadfrom 上下文中加载了一个程序集,则将激活 loadfromcontext 托管调试助手 (mda)。

为了让我的wcf模块框架支持自定义通道上下文,对代码又进行了一次小型的重构,测试时发现类型转换的错误,最后发现是loadfrom引起的。如果向 loadfrom 上下文中加载了一个程序集,则将激活 loadfromcontext 托管调试助手 (mda)。因为默认时加载程序集是在defaul上下文的,所以就算是同一个程序集里,因上下文不同,类型也不同了,所以转换失败。最后用assembly.loadfile来解决了此问题。

 

假设:

a.dll 中有一个接口 interface a
b.dll 中有一个类实现了该接口 class b : a
c.exe 在程序内引用了a.dll

assembly.loadfile只载入相应的dll文件,比如assembly.loadfile("b.dll"),则载入b.dll,假如b.dll中引用了a.dll的话,a.dll并不会被载入。
assembly.loadfrom则不一样,它会载入dll文件及其引用的其他dll,比如上面的例子,a.dll也会被载入。

ps:补充阅读:http://blog.csdn.net/guxiaoshi/article/details/5009604

相关文章
System.BadImageFormatException: 未能加载文件或程序集
System.BadImageFormatException: 未能加载文件或程序集
|
网络协议 C# C++
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
|
C#
解决办法:为什么我的DLL中加载后找不到指定的函数
解决办法:为什么我的DLL中加载后找不到指定的函数
161 0
|
图形学 Windows
构建项目时发生错误 - 错误:CS0006“... \ Assembly-CSharp-firstpass.dll”找不到
构建项目时发生错误 - 错误:CS0006“... \ Assembly-CSharp-firstpass.dll”找不到 我正在为Hololens建立一个简单的项目。 独特的场景与简单的立方体。 我遵循这个教程做出来: - > https://developer.
3553 0
visual studio编写C#代码时“未能从程序集.....中加载类型”和“找不到方法”的一种可能的解决办法
编译前报错:$exception    {"未能从程序集“XSW.MySQLDAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“XSW.MySQLDAL.EnterpriseLibraryProductDAL”。
1743 0
|
数据格式 XML
未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法
原文:未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法 使用httpclient测试webapi的时候客户端报错: {"未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。
2887 0