Error en Azure Function App VS 2019 .NET 3.0 - Método no encontrado: 'IFunctionsHostBuilder.get_Services ()'

9

Problema con Azure Functions / EFSQLSERVER .NET CORE 3.0:

Reproducir:

  • Use Visual Studio 2019 16.2.1
  • Use la plantilla de Azure Function para crear un proyecto.
  • Se modificó Target Framework a .NET Core 3.0
  • Agregue Microsoft.EntityFrameworkCore.SqlServer "Version =" 3.0.0 "referencia a través de Nuget Package Manager.
  • Aplicación de la función Excecut usando F5

Resulta en un error como se muestra en los siguientes fragmentos. ¿Alguien se encontró con este problema?

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

Mis paquetes nuget del archivo 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;**

        }
    }
}

.NET Core 3.0

ingrese la descripción de la imagen aquí

Athadu
fuente
Estos deben ser problemas de paquete ya que tengo un problema similar. Simplemente agregando el paquete de extensiones http (Microsoft.Http.Extensions) obtengo este error (sin usar ningún código de ese paquete). Al eliminarlo, el error desaparece. Estoy en 16.3.2 con la misma versión de webjobs.
MarkD

Respuestas:

3

Por ahora, ASP.NET Core 3.0 no está disponible actualmente para Azure App Service, consulte este documento de Microsoft .

Azure Functions 3.0, que será totalmente compatible con Core 3.0, estará disponible en octubre, consulte aquí . Sin embargo, no se ha lanzado ahora.

A partir de este problema , podría encontrar que Azure Function 2.0 en este momento no funciona con ningún paquete Microsoft.Extensions. * 3. * y no puede compartir código con los servicios .Net Core 3.0.

Para obtener más información sobre Azure Fuction 3.0, consulte esta discusión .

George Chen
fuente
Entendido. Gracias.
Athadu
Se rumorea que la vista previa de publicación estará disponible para el 25 de octubre
sjokkogutten
2

Ahora puede usar .net core 3.0 para crear funciones azules. Actualización Microsoft.NET.Sdk.Functionsa 1.0.30-beta2y conjunto AzureFunctionsVersiona v3-preview.

Lea más sobre Desarrollar funciones de Azure con .NET Core 3.0 aquí

ingrese la descripción de la imagen aquí

Ahora puede usar DI usando 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>();
        }
    }
}
sjokkogutten
fuente
Esto funcionó para mí: en caso de que la solución anterior no funcione y el proyecto de función use nuget Microsoft.EntityFrameworkCore 3.1.0, rebaje a 3.0.1 de lo contrario, habrá el mismo error
Felice Anno