无法从特定文件夹加载程序集

本文关键字:文件夹 加载 程序集 | 更新日期: 2023-09-27 18:29:33

所以这是我的问题-我有一个应用程序"A",它使用一个通用的dll"Login.dll"。此通用dll被放置在文件夹"CommonDll"中。这个dll应该被许多应用程序访问。为此,我将以下代码放入调用应用程序"A"的CONFIG中

<runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Login"  culture="neutral" publicKeyToken="105c4b5bbc9d3d16"/>
          <codeBase version="1.0.0.0" href="file:///C:/CommonDll/Login.dll"/>
        </dependentAssembly>
      </assemblyBinding>
    </runtime>

这在我的本地机器上运行得很好。但是,如果我在其他机器上放置相同的文件夹结构并部署此应用程序,则会出现错误无法加载文件或程序集"Login,Version=1.0.0.0,Culture=neutral,PublicKeyToken=1054b5bbc9d3d16"或其依赖项之一。系统找不到指定的文件。

但在客户端机器上,如果我运行这个

file:///C:/CommonDll/Login.dll

这是针对正确的dll。

任何建议或观点都将不胜感激。。。

无法从特定文件夹加载程序集

如果您使用自动程序集解析,您的问题应该得到解决。我喜欢使用以下代码:

var yourCommondDllFolder = new DirectoryInfo("C:/CommonDll/").GetFiles("*.dll");
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    var dll = yourCommondDllFolder.FirstOrDefault(fi => fi.Name == args.Name);
    if (dll == null)
    {
        return null;
    }
    return Assembly.Load(dll.FullName);
};

当程序集无法加载时,您的应用程序域尝试解析该程序集。