Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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# Azure函数在.net5升级后无法创建Microsoft.Extensions.Logging.Abstractions.dll_C#_Azure - Fatal编程技术网

C# Azure函数在.net5升级后无法创建Microsoft.Extensions.Logging.Abstractions.dll

C# Azure函数在.net5升级后无法创建Microsoft.Extensions.Logging.Abstractions.dll,c#,azure,C#,Azure,作为WebApi应用程序升级的一部分,我将Azure函数从.Netcore 2升级到.Net5。此功能以前一直有效。运行该函数时,出现以下错误: System.Private.CoreLib:无法加载文件或程序集“Microsoft.Extensions.Logging.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。系统找不到指定的文件 作为升级的一部分,我对功能项目进行了以下更改:

作为WebApi应用程序升级的一部分,我将Azure函数从.Netcore 2升级到.Net5。此功能以前一直有效。运行该函数时,出现以下错误:

System.Private.CoreLib:无法加载文件或程序集“Microsoft.Extensions.Logging.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。系统找不到指定的文件

作为升级的一部分,我对功能项目进行了以下更改:

  • 将项目文件TargetFramework更改为.net5.0
  • 将AzureFunctionsVersion更改为v3
  • 升级了引用的包
    • Microsoft.Azure.WebJobs
    • Microsoft.Azure.WebJobs.Extensions.EventGrid
    • Microsoft.Azure.WebJobs.Extensions.Storage
    • Json
我将运行时版本的Azure函数配置设置更改为~3

在得到上述错误后,我还添加了包

  • Microsoft.Extensions.Logging
  • Microsoft.Extensions.Logging.Abstractions
使用上述引用生成项目不会在.Net5 bin目录中创建Microsoft.Extensions.Logging.Abstractations.dll。请注意,我确实在.netcore2构建的bin目录中看到了该dll。为什么我在为.Net5构建时没有看到dll

Functions.csproj文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DebugType>full</DebugType>
    <DebugSymbols>true</DebugSymbols>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.27" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="2.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.4" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.12" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\VI.VirtualIncision.Managers\VI.VirtualIncision.Managers.csproj" />
  </ItemGroup>
  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

net5.0
v3
满的
真的
调试;痕迹
保存最新
总是
保存最新
根据您的软件包(即Microsoft.Azure.WebJobs)和您的csproj文件,您当前似乎正在运行一个“进程内Azure函数”,并且这些类型的Azure函数不支持.NET 5,因此您会出现此错误。因此,您有3种选择:

  • 基于,看起来微软正计划跳过.NET 5,只是在进程中的Azure功能中添加了对.NET 6的支持。所以你可以等一下.NET6
  • 您可以尝试将Azure函数切换为一个.NET独立的流程函数,这比简单地更新一些包和更改目标框架更复杂。它需要对项目的设置方式和使用的nuget软件包进行一些重大更改。Microsoft在此提供了一个指南:
  • 您还可以将Microsoft软件包降级到3.x.x版本,并保留所有.NET Core 3.1版本。您需要确保没有使用.NET 5包的任何其他依赖项,否则您将看到类似的问题