web-dev-qa-db-fra.com

Échec de la construction sur l'application .net Core en raison d'une définition manquante

J'essaie de créer mon application .NET Core à partir de la CLI à l'aide de dotnet build, mais à chaque fois que j'obtiens cette erreur:

'IConfigurationBuilder' ne contient pas de définition pour 'AddEnvironmentVariables' et aucune méthode d'extension 'AddEnvironmentVariables' acceptant un premier argument de type 'IConfigurationBuilder' n'a pu être trouvée (manque-t-il une directive ou une référence d'assembly?)

Ceci est ma méthode ConfigureServices dans Startup.cs où le problème se produit:

    public void ConfigureServices(IServiceCollection services)
    {
        var builder = new ConfigurationBuilder()
            .AddJsonFile("config.json")
            .AddEnvironmentVariables()
            .Build();

        services.AddEntityFrameworkSqlServer()
             .AddDbContext<MyContext>(options =>
                 options.UseSqlServer(builder["Data:MyContext:ConnectionString"]));

        services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores<MyContext>()
            .AddDefaultTokenProviders()
            .AddOpenIddictCore<Application>(config => config.UseEntityFramework());

        services.AddMvc();

        services.AddScoped<OpenIddictManager<ApplicationUser, Application>, CustomOpenIddictManager>();
    }

En regardant cet exemple Je ne vois rien de mal à l'évidence avec mon Startup.cs.

Mise à jour Mon project.json fichier:

{
  "compilationOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "dependencies": {
    "AspNet.Security.OAuth.Validation": "1.0.0-alpha1-*",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Hosting": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-*",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-*",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-*",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-*",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-*",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-*",
    "OpenIddict.Core": "1.0.0-*",
    "OpenIddict.EF": "1.0.0-*"
  },

  "frameworks": {
    "net451": {
      "frameworkAssemblies": {
        "System.ComponentModel": { "type": "build" }
      }
    },

    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-rc2-*"
        }
      },

      "imports": [
        "dnxcore50",
        "portable-net451+win8"
      ]
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-rc2-*",
      "imports": "portable-net45+wp80+win8+wpa81+dnxcore50"
    }
  },

  "scripts": {
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
  },

  "content": [
    "wwwroot",
    "Views",
    "config.json",
    "web.config"
  ],

  "exclude": [
    "wwwroot",
    "node_modules"
  ],

  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

Mise à jour d'octobre 2018: Ce problème ne se produit pas lors de la création d'une nouvelle application .NET Core 2.1 dans la dernière version de VS 2017. Tout est à présent long -version stable depuis que j'ai posé cette question.

19
barnacle.m

Vous avez besoin de l'espace de noms Microsoft.Extensions.Configuration dans la portée pour obtenir cette méthode d'extension. Vous pouvez soit le qualifier entièrement, soit l'ajouter en haut de votre fichier:

using Microsoft.Extensions.Configuration;

Vous aurez également besoin de la référence NuGet Microsoft.Extensions.Configuration.EnvironmentVariables .

41
mason

Le package correct à ajouter pour .AddEnvironmentVariables() est Microsoft.Extensions.Configuration.EnvironmentVariables

30
Carlo

J'ai essayé Microsoft.Extensions.Configuration.EnvironmentVariables mais sans succès. J'avais déjà Microsoft.Extensions.Configuration de NuGet. J'ai ajouté Microsoft.Extensions.Configuration.UserSecrets puis cela a fonctionné.

6
spacebread