【发布时间】:2019-09-11 07:24:24
【问题描述】:
我创建了一个图表 C# 库(我们称之为chartlibrary),它本身依赖于多个第三方 dll 文件。
在另一个可执行项目(我们称之为chartuser)中,我引用了chartlibrary 项目(这两个项目位于Visual Studio 中的同一个解决方案中)。
编译后可以看到chartlibrary引用的所有第三方dll文件也都包含在chartuser的bin/Debug文件夹下。但是,我得到一个运行时错误,它基本上表明chartlibrary 中的某些引用无法解析。然后我试图通过
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
和
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var assemblyFileName = args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll";
var assemblyPathFileName = _currentPluginPath + @"\" + assemblyFileName;
if (File.Exists(assemblyPathFileName))
{
return Assembly.Load(File.ReadAllBytes(assemblyPathFileName));
}
return null;
}
问题是RequestingAssembly 为空,Name 非常神秘。
即使所有 dll 都在可执行项目的 bin/Debug 文件夹中,也无法找到引用 dll 并且无法解析程序集,我做错了什么?
【问题讨论】:
-
如果所有依赖项都在同一个文件夹中,则应该没有理由处理
AssemblyResolve事件。您能否包括您收到的确切错误消息?有时,“...或其依赖项之一”表示第 3 方库本身具有附加依赖项。也许您可以尝试创建一个使用这些 3rd 方库的单一测试解决方案并查看它是否运行。
标签: c# visual-studio dependencies .net-assembly