Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
454 views
in Technique[技术] by (71.8m points)

c# - 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.

question from:https://stackoverflow.com/questions/65873061/setbasepath-not-present-in-configurationbuilder-under-net-core-5

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...