Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Build failing on .net Core app due to missing definition

I'm trying to build my .NET Core app from the CLI using dotnet build, but every single time I get this error:

'IConfigurationBuilder' does not contain a definition for 'AddEnvironmentVariables' and no extension method 'AddEnvironmentVariables' accepting a first argument of type 'IConfigurationBuilder' could be found (are you missing a using directive or an assembly reference?)

This is my ConfigureServices method in Startup.cs where the problem is happening:

    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>();     } 

Looking at this example I see nothing obviously wrong with my Startup.cs.

Update My project.json file:

{   "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"   ] } 

Oct 2018 Update: This problem does not occur when creating a new .NET Core 2.1 app in the latest build of VS 2017. Everything is now at a long-stable version since I asked this question.

like image 510
barnacle.m Avatar asked May 12 '16 14:05

barnacle.m


People also ask

Does not contain a definition for SetBasePath?

Fix: 'ConfigurationBuilder' does not contain a definition for 'SetBasePath' To fix this error, you will have to install a new NuGet package Microsoft. Extensions. Configuration. Json .


1 Answers

You need the Microsoft.Extensions.Configuration namespace in scope to get that extension method. Either fully qualify it, or add this to the top of your file:

using Microsoft.Extensions.Configuration; 

You also will need the NuGet reference Microsoft.Extensions.Configuration.EnvironmentVariables.

like image 180
mason Avatar answered Sep 29 '22 23:09

mason