Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SetBasePath not present in ConfigurationBuilder under .NET Core 5

According to the docs for .NET Core 5, there's a method SetBasePath and it's widely used in a bunch of blogs (example 1, example 2, example 3 etc.). There's no notion of it being a weird gotcha or such. However, when I try the syntax below, it's marked red and claimed not to be there.

using System;
using Microsoft.Extensions.Configuration;
static void Main(string[] args)
{
  string path = AppDomain.CurrentDomain.BaseDirectory;
  IConfigurationBuilder builder = new ConfigurationBuilder();
  builder.SetBasePath(path);
}

I'm not sure why this happens not what to do about it.

Steps to reproduce:

  1. Create a vanilla console application in .NET Core 5 in C#.
  2. Paste in the code in Program.cs replacing the file's contents.
  3. Try to compile or execute.

The error received is like this.

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

As far i can understand, I have all the prerequisites in place.

like image 595
Konrad Viltersten Avatar asked Dec 31 '22 17:12

Konrad Viltersten


1 Answers

Remember that multiple types can contribute methods to a single type through Extension Methods. And so SetBasePath was never a method on the IConfigurationBuilder interface.

And multiple Assemblies can contribute types to the same namespace, and the docs say the type that defines the SetBasePath extension method is in:

FileConfigurationExtensions Class Definition Namespace: Microsoft.Extensions.Configuration Assembly: Microsoft.Extensions.Configuration.FileExtensions.dll

FileConfigurationExtensions Class

Which you can easilly verify is not present in your dependencies. So you're missing a NuGet package. Turns out this one is easy to find: Microsoft.Extensions.Configuration.FileExtensions

like image 83
David Browne - Microsoft Avatar answered Jan 02 '23 05:01

David Browne - Microsoft