Azure Functions / EFSQLSERVER .NET CORE 3.0的问题:
要复制:
导致错误,如以下代码片段所示。有人遇到过这个问题吗?
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;**
}
}
}
答案 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功能的更多信息。您现在可以使用IFunctionsHostBuilder
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.x
的 Microsoft.Extensions.DependencyInjection
版本,该版本与我们的 3.x 运行时不兼容。一旦我们降级到参考 Microsoft.Extensions.Localization
版本 3.1.10
,Microsoft.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软件包也无法在构建服务器上运行。
此处有更多详细信息:Azure functions dependency injection - error when referencing class library(Github)。