加载其他路径的DLL程序集

 

我们使用AssemblyResolve 事件来处理加载某个程序集失败的异常,通过异常处理中给定路径,加载相应路径下的DLL程序集。

事件声明如下:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

异常处理逻辑,加载某路径下DLL:

private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var index = args.Name.IndexOf(',');
string sAsmName = "";
if (index > 0)
sAsmName = args.Name.Substring(0, index) + ".dll";
else
sAsmName = args.Name + ".dll";

if (sAsmName.StartsWith("UFIDA.U8.ExpressionEditor"))
{
if (string.IsNullOrEmpty(_currentAsmDir))
{
_currentAsmDir = System.IO.Path.Combine(GetU8Path(), @"ExpressionEditor\Bin");
}
String asmPath = System.IO.Path.Combine(_currentAsmDir, sAsmName);
if (System.IO.File.Exists(asmPath))
{
return System.Reflection.Assembly.LoadFrom(asmPath);
}
}
return null;
}

posted @ 2015-12-08 11:00  紫风之韵  阅读(261)  评论(0)    收藏  举报