嗨,我有简单的客户端向 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();
}
正常吗?感谢您的建议。