Azure Function App VS 2019 .NET 3.0 中的错误 - 找不到方法:'IFunctionsHostBuilder.get_Services()'
Posted
技术标签:
【中文标题】Azure Function App VS 2019 .NET 3.0 中的错误 - 找不到方法:\'IFunctionsHostBuilder.get_Services()\'【英文标题】:Error in Azure Function App VS 2019 .NET 3.0 - Method not found: 'IFunctionsHostBuilder.get_Services()'Azure Function App VS 2019 .NET 3.0 中的错误 - 找不到方法:'IFunctionsHostBuilder.get_Services()' 【发布时间】:2020-02-03 02:14:23 【问题描述】:Azure Functions/EFSQLSERVER .NET CORE 3.0 的问题:
复制:
使用 Visual Studio 2019 16.2.1 使用 Azure Function 模板创建项目。 将目标框架更改为 .NET Core 3.0 添加 Microsoft.EntityFrameworkCore.SqlServer" 版本="3.0.0" 通过 Nuget 包管理器进行参考。 使用 F5 执行函数应用程序导致错误,如以下 sn-ps 所示。有人遇到过这个问题吗?
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
我的 nuget 包来自 csproj 文件。
<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;**
【问题讨论】:
这一定是包问题,因为我有类似的问题。只需添加 http 扩展包 (Microsoft.Http.Extensions),我就会收到此错误(不使用该包中的任何代码)。通过删除它,错误消失了。我在 16.3.2 上使用相同的 webjobs 版本。 【参考方案1】:目前,ASP.NET Core 3.0 目前不适用于 Azure 应用服务,请查看此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。
【讨论】:
知道了。谢谢。 有传言说发布预览版将于 10 月 25 日推出【参考方案2】:您现在可以使用 .net core 3.0 创建 azure 函数。将Microsoft.NET.Sdk.Functions
更新为1.0.30-beta2
并将AzureFunctionsVersion
设置为v3-preview
。
阅读有关使用 .NET Core 3.0 开发 Azure Functions 的更多信息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>();
【讨论】:
这对我有用 - 如果上述修复不起作用并且函数项目使用 nuget Microsoft.EntityFrameworkCore 3.1.0,请降级到 3.0.1,否则会出现相同的错误【参考方案3】:在 Azure Functions 3.0 作为稳定版本发布之前,最简单的方法似乎是将 Microsoft.Extensions.Http
包降级到 2.2.0:
它帮助我解决了同样的问题,因为目前似乎没有其他解决方法。即使是可用的 beta 包也不能在构建服务器上运行。
更多细节在这里:Azure functions dependency injection - error when referencing class library(Github)。
【讨论】:
【参考方案4】:这拯救了我的一天
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
</PropertyGroup>
【讨论】:
【参考方案5】:要添加其他需要注意的内容,以下是我们的问题:
我们的函数应用引用了域项目 我们的域项目引用了"Microsoft.Extensions.Localization
版本5.0.1
,而后者又引用了Microsoft.Extensions.DependencyInjection
的5.x
版本,它与我们的3.x 运行时不兼容。一旦我们降级到参考Microsoft.Extensions.Localization
版本3.1.10
,Microsoft.Extensions.DependencyInjection
参考也随之降级并且一切正常。
【讨论】:
我花了很长时间来解开这个问题,但基本上没有v5.x
依赖项与 .Net Core 3 兼容。这些是 .Net 5 运行时。令人讨厌的是,Nuget 似乎并不关心您的目标版本并提供将程序集升级到 v5,即使它们会破坏您的构建
我正在尝试获取Nuget to address this issue以上是关于Azure Function App VS 2019 .NET 3.0 中的错误 - 找不到方法:'IFunctionsHostBuilder.get_Services()'的主要内容,如果未能解决你的问题,请参考以下文章
Azure Function 1.x和VS17的Nuget问题
从 Azure Function App 调用 Snowflake 过程
从 Azure Function App 访问带有防火墙的 Azure Blob 存储