【发布时间】: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