【问题标题】:ASP.NET Core MVC: The located assembly's manifest definition does not match the assembly referenceASP.NET Core MVC:找到的程序集的清单定义与程序集引用不匹配
【发布时间】:2021-07-17 12:12:44
【问题描述】:

我尝试将我的 Asp.net core mvc 项目部署到我们的服务器,但 ISS 只记录此错误

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)
File name: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'

它可以在本地工作,但不能在服务器上工作。

我发现这个Could not load file or assembly Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0 线程关于这个问题,但接受的答案是针对 .net 框架,而不是 .net 核心(并且没有工作,我确实尝试过),后来的答案是关于我的 Azure 函数不要使用。

我用的是net core 3.1

【问题讨论】:

  • Download Core on deploy machine(dotnet.microsoft.com/download/dotnet/3.1) 要在部署机器上运行 Net 应用程序,必须发生以下两件事之一 1) 构建机器上的 Net 版本是 Deploy Machine 必须是相同 2)您在构建机器上发布,该机器创建 setup.exe 折叠像商业软件一样,然后在部署机器上运行 setup.exe。 Net 将 windows dll 用于许多方法,并且 windows dll 在构建和部署机器上必须是相同的版本。 setup.exe 更新 windows dll。
  • 服务器上已经安装了runetime。错误中命名的 DLL 也与项目的其余部分一起部署。
  • 是同一个版本吗?
  • 我已经预料到了,所以我从不费心检查(抱歉,这是我第一次尝试部署某些东西)服务器上的版本是 3.something,本地版本是 5.something。现在的问题是为什么。我使用 DevOps 管道/部署组。

标签: c# asp.net-mvc asp.net-core iis asp.net-core-3.1


【解决方案1】:

所以,这可能是一个菜鸟错误: 我使用 Core 3.1,但 NuGet 添加了 5.0 的引用

<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0.0" />

降级到3.1.14版本后,一切

    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.14" />

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多