Assembly.LoadFrom 加载 DLL 失败

Assembly.LoadFrom fails to load DLL

我有一个在运行时加载插件的程序。我遍历 "Plugins" 目录中的每个目录并尝试加载找到的 DLL。每个插件都有自己的目录,其中包含插件 DLL 文件和另一个名为 "Dependencies" 的目录。如果插件的 DLL 调用 AssemblyResolve 事件,我将执行以下操作:

没有第 3 方依赖项的插件或像 Newtonsoft.Json 或 NHibernate 这样的简单插件加载得很好。我有一个依赖于 DLL 的插件,我们将调用 "custom_library.dll." 当 AssemblyResolve 事件被触发以查找此依赖项时,我可以确认文件在 Dependencies 目录中,就像它应该的那样,甚至是 File.Exists() 调用 return 为真。

不幸的是,对此 DLL 的 Assembly.LoadFrom() 调用抛出 FileLoadException 并显示消息“无法加载文件或程序集 'custom_library.dll, Version=5.3.136.0, Culture=neutral, PublicKeyToken=null'。除了 HRESULT -2146233079 之外,在异常中没有提供任何其他内容。我也可以通过 Visual Studio 引用此 DLL 没有问题。

为什么我尝试在运行时而不是通过 Visual Studio 的添加引用功能加载 DLL 时出现此异常?

Assembly.LoadFrom 失败了,因为我试图引用的第 3 方 DLL 是作为 .NET Framework 项目构建的,而我在 .NET Core 项目中。我通过使用一个 class 作为 .NET Framework Class 库项目创建自己的 DLL 来确认这一点,并收到相同的错误。一旦我采用完全相同的东西并针对 .NET Standard 2.0 构建它,一切都加载正常。

我与供应商进行了交谈,一旦他们提供了一个针对 .NET Standard 的不同 DLL,该 DLL 就能够毫无问题地加载并找到它的所有依赖项。