Comment SetBasePath dans ConfigurationBuilder dans Core 2.0

Comment définir le chemin de base dans ConfigurationBuilder dans Core 2.0.

J’ai googlé et trouvé cette question, ceci de Microsoft docs, et des documents 2.0 en ligne, mais ils semblent utiliser une version de Microsoft.Extension.Configuration de 1.0.0-beta8 .

Je veux lire appsettings.json . Y a-t-il une nouvelle façon de procéder dans Core 2.0?

 using System; using System.IO; using Microsoft.Extensions.Configuration; namespace ConsoleApp2 { class Program { public static IConfigurationRoot Configuration { get; set; } static void Main(ssortingng[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) // <== compile failing here .AddJsonFile("appsettings.json"); Configuration = builder.Build(); Console.WriteLine(Configuration.GetConnectionString("con")); Console.WriteLine("Press a key..."); Console.ReadKey(); } } } 

appsetting.json

 { "ConnectionSsortingngs": { "con": "connection ssortingng" } } 

MISE À JOUR: Outre l’ajout de Microsoft.Extensions.Configuration.FileExtensions, comme indiqué ci-dessous par Set, je devais également append Microsoft.Extensions.Configuration.Json pour obtenir l’extension AddJsonFile .

SetBasePath méthode d’extension SetBasePath est définie dans Config.FileExtensions .

Vous devez append une dépendance au package Microsoft.Extensions.Configuration.FileExtensions .

Pour résoudre AddJsonFile ajoutez une dépendance à Microsoft.Extensions.Configuration.Json

Je développe une application console .NET Core 2 à l’aide de Visual Studio 2017 v15.5. Comme d’autres l’ont noté, après avoir ajouté Microsoft.Extensions.Configuration, je devais append Microsoft.Extensions.Configuration.Json pour que l’appel AddJsonFile() fonctionne. Cela a également fait fonctionner l’appel SetBasePath() ; donc je n’ai pas eu besoin d’append Configuration.FileExtensions . (Mon code comstack et s’exécute à la fois avec et sans.)

J’ai également eu un appel à AddEnvironmentVariables() , pour lequel je devais append Configuration.EnvironmentVariables. Mon code est le suivant:

  var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) // requires Microsoft.Extensions.Configuration.Json .AddJsonFile("appsettings.json") // requires Microsoft.Extensions.Configuration.Json .AddEnvironmentVariables(); // requires Microsoft.Extensions.Configuration.EnvironmentVariables Configuration = builder.Build(); 

Fait intéressant, la seule instruction dont j’avais besoin était using Microsoft.Extensions.Configuration .

Utilisez à la fois «Microsoft.Extensions.Configuration» et «Microsoft.Extensions.Configuration.Json» pour résoudre le problème.

https://www.nuget.org/packages/Microsoft.Extensions.Configuration/ https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/

Voici l’exemple ‘ConnectionFactory’

 using System.Data; using System.Data.SqlClient; using Microsoft.Extensions.Configuration; using System.IO; namespace DataAccess.Infrastructure { public class ConnectionFactory : IConnectionFactory { public ConnectionFactory() { var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json"); Configuration = builder.Build(); } public IConfigurationRoot Configuration { get; } public IDbConnection GetConnection { get { var connectionSsortingng = Configuration.GetConnectionSsortingng("DefaultConnection"); var conn = new SqlConnection(connectionSsortingng); conn.Open(); return conn; } } #region IDisposable Support private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // TODO: dispose managed state (managed objects). } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } } // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources. // ~ConnectionFactory() { // // Do not change this code. Put cleanup code in Dispose(bool disposing) above. // Dispose(false); // } // This code added to correctly implement the disposable pattern. public void Dispose() { // Do not change this code. Put cleanup code in Dispose(bool disposing) above. Dispose(true); // TODO: uncomment the following line if the finalizer is overridden above. // GC.SuppressFinalize(this); } #endregion } }