C# 程序集解析程序在实例化变量时不会启动,但从函数启动它会启动



嗨,我有一个简单的客户端将值写入UA服务器。我在VS2017,Win10 NetFr 4.8中使用OpcLabs库。库是从可执行文件以外的其他文件夹加载的。当 dll 位于同一文件夹中时,以下两种方法都有效,当应该触发解析程序时 = dll 不在文件夹中 - 它不是。 问题很简单。解析 器:

private static Assembly OpcAssRes(object sender, ResolveEventArgs args)
{
var ProgramFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
string OpcAsmPath = Path.Combine(ProgramFiles, "OPC Labs QuickOPC 2020.2", "Assemblies", "net47");
var ReqAss = new AssemblyName(args.Name).Name;
foreach (string FAssName in Directory.GetFiles(OpcAsmPath, "*.dll"))
{
if (Path.GetFileNameWithoutExtension(FAssName) == ReqAss)
{
var DLL = Assembly.LoadFrom(FAssName);
return DLL;
}
}
return null;
}

当我想使用库中的方法实例化客户端时:

工程:

static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += OpcAssRes;
ClCon();
}
static void ClCon()
{
var cl = new EasyUAClient();
}

不起作用 - 立即引发异常,找不到库。我什至尝试在解析器之前将其睡眠,但它没有 - 即时异常 - 就像解析器未触发一样。在解析器中添加断点时,它不会到达它 = 它不会启动。

static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += OpcAssRes;
var cl = new EasyUAClient();
}

正常吗?感谢您的建议。

方法中使用的类型在调用方法之前加载。如果在使用外部程序集中的类型的方法中绑定程序集解析程序,则尚未绑定加载程序。

相关内容

  • 没有找到相关文章

最新更新