C# – Quando SetBasePath() e AddJsonFile() mancano per ConfigurationBuilder

 C Programming >> Programmazione C >  >> Tags >> File
C# – Quando SetBasePath() e AddJsonFile() mancano per ConfigurationBuilder

Se stai cercando di utilizzare ConfigurationBuilder per leggere appsettings.json, probabilmente hai il seguente frammento di codice e stai riscontrando errori del compilatore:

using Microsoft.Extensions.Configuration;

var config = new ConfigurationBuilder()
			.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
			.AddJsonFile("appsettings.json")
			.Build();
Code language: C# (cs)

Questo ha tre diversi errori, ma il compilatore mostra solo un errore alla volta. Ciò è dovuto al modo in cui è progettato:ConfigurationBuilder si trova in una libreria e la sua funzionalità specializzata è fornita da metodi di estensione in altre librerie. SetBasePath() e AddJsonFile() sono metodi di estensione in due diverse librerie.

Se provi a risolvere un problema alla volta, vedrai la seguente sequenza di errori:

Errore Pacchetto da installare
Impossibile trovare ConfigurationBuilder . VS ti dice utilmente quale pacchetto aggiungere per questo problema. Microsoft.Extensions.Configuration
ConfigurationBuilder non contiene una definizione per SetBasePath() Microsoft.Extensions.Configuration.FileExtensions
ConfigurationBuilder non contiene una definizione per AddJsonFile() Microsoft.Extensions.Configuration.Json

Risparmiati i problemi e risolvi tutti i problemi in una volta installando il pacchetto Microsoft.Extensions.Configuration.Json (perché contiene gli altri due pacchetti!):

Install-Package Microsoft.Extensions.Configuration.Json
Code language: PowerShell (powershell)

Nota:si sta installando con Package Manager Console (Visualizza> Altre finestre> Package Manager Console).

Va notato che incontrerai lo stesso tipo di situazione "un errore alla volta" quando tenti di utilizzare qualsiasi metodo di estensione di ConfigurationBuilder. Cerca il pacchetto più specifico per risolvere tutti i problemi contemporaneamente, proprio come ho mostrato sopra.

Ad esempio, se stai utilizzando AddUserSecrets() , è sufficiente aggiungere il pacchetto Microsoft.Extensions.Configuration.UserSecrets per ottenere tutti i pacchetti necessari invece di aggiungerne uno alla volta.