Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Core 3.1 web API在本地构建良好,但在通过Azure DevOps部署时出错_C#_.net Core - Fatal编程技术网

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

C# .NET Core 3.1 web API在本地构建良好,但在通过Azure DevOps部署时出错,c#,.net-core,C#,.net Core,几周前我也遇到过类似的问题: 我可以在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, Cultu

几周前我也遇到过类似的问题:

我可以在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
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:\Projects\KindRegards\src\Api\Web.Api.csproj  1   

我甚至不知道如何开始深入研究这个问题。任何帮助都将不胜感激。

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

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


当您的Visual Studio自动更新被启用时,通常会发生这种情况,因此您的.Net核心NUGET比Azure DevOps中使用的更为最新。您似乎创建了针对.Net 5的项目,这很好。按照最初的方式恢复项目,并在安装.Net 5.0.100的管道中添加另一个步骤。我想下面的链接可能会有所帮助


您的部署模式设置为什么?当我切换到.NET5.0并升级解决方案中的所有nuget软件包时,我不得不将部署模式设置更改为“依赖于框架”,而不是“自包含”。我必须手动擦除服务器目录,并根据更改重新部署。可能会检查您的部署模式吗?我对使用DevOps+Azure相对较新,所以我不确定在哪里可以找到它。我在本地Visual Studio中通过发布部署它时遇到问题。不管出于什么原因,DevOps没有更新服务器上的.dll版本,所以我手动将其全部删除。然后我在本地发布了一篇文章,注意到它把我甚至不用的所有东西都复制到了我的服务器上。我注意到发布设置为“selfcontained=true”,应该为false,否则它会将许多错误的.dll复制到目标。查看您的资料是如何发布的,即使是从DevOps发布的,也是值得的。在.NET5.0迁移中,这对我们来说是一个突破。在本地查找.pubxml文件或在DevOps上查找publish任务。当我的本地VS publish中的“selfcontained=true”时,它复制了数百个尚未使用.NET 5.0的.NET Framework.dll。一旦我告诉它部署模式是“依赖于框架”而不是“自包含”,我的.NET5.0应用程序就开始工作,并真正使用我的NuGet软件包w/.NET5.0(它愚弄了我们几天)。在检查了这些更改之后,它似乎仍然在工作,即使从DevOps的角度来看也是如此。我也从来没有处理过部署模式,但显然.NET5.0打破了它,至少对我的团队来说是这样。构建管道可以很好地构建解决方案,我没有收到任何错误。然后,我使用“发布管道”部署该工件。只有在部署生成结果后尝试启动生成结果时,我才会收到错误。@Jason Thuli您尝试在哪里发布?Azure?我试过2次了。Azure应用程序服务和数字海洋水滴。两者都使用Linux托管。@Jasonthli检查您的发布管道任务设置。它可能是“自包含的”,这将导致非5.0 DLL被继承,从而导致版本控制conflict@JasonThuli您是否查看了工件并验证了存在正确的版本?服务器上是否安装了.NET 5.0?如果你查看你的工件/输出,是否有多余的垃圾(比如你不认识的mbs值的东西,或者你的应用程序不使用的东西?),这就是为什么它令人困惑的原因。我们无法升级到.NET 5,因为某些第三方依赖项尚未升级。此外,我们的构建管道使用了3.1.x,并且成功了。直到我尝试从服务器上运行站点(这显然是在DevOps上的构建管道之后),我才发现错误。
    <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:\Projects\KindRegards\src\Api\Web.Api.csproj  1