加载其他路径的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;
}

浙公网安备 33010602011771号