Azure Function App VS 2019 .NET 3.0中的错误-找不到方法:'IFunctionsHostBuilder.get_Services()'

时间:2019-10-04 18:25:48

标签: azure .net-core-3.0 azure-functions-runtime entity-framework-core-3.0

Azure Functions / EFSQLSERVER .NET CORE 3.0的问题:

要复制:

  • 使用Visual Studio 2019 16.2.1
  • 使用Azure Function模板创建项目。
  • 将目标框架更改为.NET Core 3.0
  • 添加Microsoft.EntityFrameworkCore.SqlServer“ Version =” 3.0.0“ 通过Nuget软件包管理器进行引用。
  • 使用F5执行功能App

导致错误,如以下代码片段所示。有人遇到过这个问题吗?

Azure Functions Core Tools (2.7.1633 Commit hash: 45c7d86a3bbc9ed0a80a8f4199aa7ea80ccfb24e)
Function Runtime Version: 2.0.12673.0
[10/4/2019 6:13:14 PM] Building host: startup suppressed:False, configuration suppressed: False
[10/4/2019 6:13:14 PM] Loading startup extension 'Startup'
[10/4/2019 6:13:14 PM] Loaded extension 'Startup' (1.0.0.0)
[10/4/2019 6:13:14 PM] Loading startup extension 'DurableTask'
[10/4/2019 6:13:14 PM] Loaded extension 'DurableTask' (1.0.0.0)
[10/4/2019 6:13:14 PM] A host error has occurred
[10/4/2019 6:13:14 PM] FunctionApp5: Method not found: 'Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Azure.Functions.Extensions.DependencyInjection.IFunctionsHostBuilder.get_Services()'.
Value cannot be null.
Parameter name: provider

我的csproj文件中的nuget包。

<ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
  </ItemGroup>
using Microsoft.Azure.Functions.Extensions.DependencyInjection;


[assembly: FunctionsStartup(typeof(FunctionApp5.Startup))]
namespace FunctionApp5
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            **var x = builder.Services;**

        }
    }
}

.NET Core 3.0

enter image description here

5 个答案:

答案 0 :(得分:3)

目前,Azure App Service当前不可用ASP.NET Core 3.0,请选中此Microsoft doc

与Core 3.0完全兼容的Azure Functions 3.0将于10月上市,请选中here。但是,它现在还没有发布。

在此issue中,您可能会发现Azure Function 2.0现在不适用于任何Microsoft.Extensions。* 3. *程序包,并且无法与.Net Core 3.0服务共享代码。

有关Azure Fuction 3.0的更多信息,请检查此discussion

答案 1 :(得分:2)

您现在可以使用.net core 3.0创建天蓝色函数。将Microsoft.NET.Sdk.Functions更新为1.0.30-beta2,并将AzureFunctionsVersion设置为v3-preview

了解有关使用.NET Core 3.0 here

开发Azure功能的更多信息。

enter image description here

您现在可以使用IFunctionsHostBuilder

使用DI
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(BI_Geo.AzureFunctions.Startup))]
namespace BI_Geo.AzureFunctions
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddScoped<IProcess, Process>();
        }
    }
}

答案 2 :(得分:1)

要添加其他要注意的东西,以下是我们的问题:

  • 我们的函数应用引用了一个域项目
  • 我们的域项目引用了 "Microsoft.Extensions.Localization 版本 5.0.1,而该版本又引用了 5.xMicrosoft.Extensions.DependencyInjection 版本,该版本与我们的 3.x 运行时不兼容。一旦我们降级到参考 Microsoft.Extensions.Localization 版本 3.1.10Microsoft.Extensions.DependencyInjection 参考也随之降级,一切正常。

答案 3 :(得分:0)

这挽救了我的生活

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>

答案 4 :(得分:-1)

直到Azure Functions 3.0作为稳定版本可用,最简单的方法似乎是将Microsoft.Extensions.Http程序包降级为2.2.0:

它帮助了我解决同样的问题,因为目前似乎没有其他解决方法。甚至可用的beta软件包也无法在构建服务器上运行。

enter image description here

此处有更多详细信息:Azure functions dependency injection - error when referencing class library(Github)。