Azure函数V3无法使用EF核心5.0-rc1加载文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 5.0.0.0 [英] Azure function V3 could not load file or assembly Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0 with EF core 5.0-rc1

查看:40
本文介绍了Azure函数V3无法使用EF核心5.0-rc1加载文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 5.0.0.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

案例

我们正在使用.netcore 3.1创建azure函数v3.使用 EF core 5.0-rc1 Depdency Injection

1)DependecyInjection

  [程序集:FunctionsStartup(typeof(xxxxx.Startup))]命名空间xxxxx{公共类Startup:FunctionsStartup{公共重写void Configure(IFunctionsHostBuilder构建器){var services = builder.Services;var configBuilder = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddJsonFile("local.settings.json",true,reloadOnChange:true).AddEnvironmentVariables();ConfigureServices(服务);ConfigureAppSettings(services,configBuilder.Build());ConfigureLogging(services,configBuilder.Build());}}} 

2)EF核心5.0 rc-1

虽然 Entity Framework Core 5.0 RC1无法在.Net标准2.0平台上运行,但它需要 .net标准2.1 .因此找不到 Microsoft.Azure.Functions.Extensions .

有关更多详细信息,您可以参考以下文章.

Case

We are creating azure function v3 with .netcore 3.1. Using EF core 5.0-rc1 and Depdency Injection

1) DependecyInjection

[assembly: FunctionsStartup(typeof(xxxxx.Startup))]
namespace xxxxx
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var services = builder.Services;
            var configBuilder = new ConfigurationBuilder()
                .SetBasePath(Environment.CurrentDirectory)
                .AddJsonFile("local.settings.json", true, reloadOnChange: true)
                .AddEnvironmentVariables() ;
            ConfigureServices(services);
            ConfigureAppSettings(services, configBuilder.Build());
            ConfigureLogging(services, configBuilder.Build());
        }
    }
}

2) EF core 5.0 rc-1

https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-efcore-5-0-rc1/

Error

Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.

Packages

Following are the packages referenced

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.1.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.0-rc.1.20451.14" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
    <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

Troubleshooting

commenting the following line in startup.cs (Dependency injection) solves the problem

[assembly: FunctionsStartup(typeof(xxxxx.Startup))]

解决方案

The Microsoft.Azure.Functions.Extensions depends on .net standard 2.0.

While the Entity Framework Core 5.0 RC1 will not run on .Net standard 2.0 platforms, it requires .net standard 2.1. So it could not find the Microsoft.Azure.Functions.Extensions.

For more details, you could refer to this article.

这篇关于Azure函数V3无法使用EF核心5.0-rc1加载文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 5.0.0.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆