.NET Core 3.1 web API在本地构建良好,但在通过Azure DevOps部署时会出现错误



几周前我遇到了一个类似的问题:

I';m得到错误";Microsoft.AspNetCore.Hosting.Abstractions,版本=3.1.0.0"在.NET Core 3.1应用程序中

我可以从Visual Studio 2019本地运行它,没有任何问题,但每当我在通过Azure DevOps部署后尝试运行它时,我都会收到以下错误:

Unhandled exception. 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'
at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
at System.Reflection.RuntimeMethodInfo.get_ReturnType()
at Microsoft.AspNetCore.Hosting.StartupLoader.FindMethod(Type startupType, String methodName, String environmentName, Type returnType, Boolean required)
at Microsoft.AspNetCore.Hosting.StartupLoader.HasConfigureServicesIServiceProviderDelegate(Type startupType, String environmentName)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass12_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at KindRegards.Web.Api.Program.Main(String[] args) in /home/vsts/work/1/s/src/Api/Program.cs:line 10

我不完全理解所有这些是如何联系在一起的,所以我尝试添加:

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

但那没用。我有其他";微软扩展;使用3.1.8版本的包,所以我尝试通过添加来匹配这些包

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

但后来我无法在本地运行它,我得到了这个错误:

NU1605  Detected package downgrade: Microsoft.Extensions.DependencyInjection.Abstractions from 5.0.0 to 3.1.8. Reference the package directly from the project to select a different version. 
KindRegards.Web.Api -> KindRegards.Plugins.PaymentProcessors.GreenMoney -> Microsoft.Extensions.Http 5.0.0 -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0) 
KindRegards.Web.Api -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.8)    Web.Api Z:ProjectsKindRegardssrcApiWeb.Api.csproj  1   

我甚至不知道该如何开始深入研究。如有任何帮助,我们将不胜感激。

我以前在使用Azure DevOps时遇到过这种情况,解决方案是检查Azure DevOps使用的是什么,我将项目与之匹配,我的意思是,您的目标应该是Azure DevOps代理正在使用的版本

我记不清了,但很可能我降级了我的应用程序版本,以匹配Azure DevOps。

这种情况通常发生在启用Visual Studio自动更新的情况下,这样您的.Net Core Nuget就比Azure DevOps 中使用的Nuget更为最新

您创建的项目目标是.Net 5,这很好。将项目恢复到原来的状态,并在安装.Net 5.0.100的管道中添加另一个步骤。我认为下面的链接可能会有所帮助。

Azure管道在dotnet构建中失败,需要升级到最新的.net核心版本

最新更新