【问题标题】:Could not load file or assembly Autofac无法加载文件或程序集 Autofac
【发布时间】:2018-12-07 13:28:18
【问题描述】:

我有一个 CLI 程序,它每晚在数据库上运行不同的任务。尝试手动运行程序时,我收到以下错误消息。代码甚至还没有命中 Program.cs,因为它会向控制台输出一些消息。

无法加载文件或程序集“Autofac,Version=4.0.0.0,Culture=neutral,PublicKeyToken=17863af14b0044da”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

但是,当在本地数据库上通过 Visual Studio 进行调试时,问题不会发生,仅在我们的测试和生产服务器上发生。 Autofac 版本 (4.8.1) 之间没有不匹配或 CLI 项目中缺少引用。

我查看了Could not load file or assembly 'Autofac, Version=3.0.0.0,但这不是解决方案。我试过清理和重建,但没有成功。

我们之前没有遇到过这个问题;它发生在我们的最新版本之后。但是,我们并未对 Autofac 的工作方式、版本更新等进行任何重大更改。

【问题讨论】:

    标签: c# .net dependency-injection autofac


    【解决方案1】:

    问题似乎毕竟是版本不匹配。该程序似乎无法识别要运行的版本并默认返回 4.0.0.0,但它应该运行 4.8.1.0。

    App.config 在为发布而构建时不会被保留,但还有另一个与程序同名的 .config 文件(例如 CLIProgram.exe.config)。 App.config 包含以下行,这些行在构建时转移到 CLIProgram.exe.config:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.8.1.0" newVersion="4.8.1.0" />
          </dependentAssembly>
        </assemblyBinding>
    </runtime>
    

    如果我手动将这些行添加到 CLIProgram.exe.config 中,它会再次起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多