Cómo configurarBasePath en ConfigurationBuilder en Core 2.0

Resuelto Padhraic asked hace 6 años • 5 respuestas

¿Cómo puedo configurar la ruta base en ConfigurationBuilder en Core 2.0?

Busqué en Google y encontré esta pregunta, esto en Microsoft docs y los documentos 2.0 en línea, pero parecen estar usando una versión de Microsoft.Extension.Configuration1.0.0 -beta8 .

Yo quiero leer appsettings.json. ¿Existe una nueva forma de hacer esto en 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(string[] 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();
        }
    }
}

configuración de aplicaciones.json

{
  "ConnectionStrings": {
    "con": "connection string"
  }
}

ACTUALIZACIÓN: Además de agregar Microsoft.Extensions.Configuration.FileExtensions como lo indica Set a continuación, también necesitaba agregar Microsoft.Extensions.Configuration.Json para obtener la AddJsonFileextensión.

Padhraic avatar Oct 20 '17 13:10 Padhraic
Aceptado

El SetBasePathmétodo de extensión se define en Config.FileExtensions .

Debe agregar una referencia al paquete Microsoft.Extensions.Configuration.FileExtensions .

Para resolverlo AddJsonFile, agregue una referencia al Microsoft.Extensions.Configuration.Jsonpaquete.

Set avatar Oct 20 '2017 06:10 Set

Estoy desarrollando una aplicación de consola .NET Core 2 con Visual Studio 2017 v15.5. Como otros han señalado, después de agregar Microsoft.Extensions.Configuration necesitaba agregar Microsoft.Extensions.Configuration.Json para que la AddJsonFile()llamada funcionara. Esto también hizo que la SetBasePath()llamada funcionara; así que no necesitaba agregar Configuration.FileExtensions . (Mi código se compila y ejecuta con y sin él).

También recibí una llamada AddEnvironmentVariables(), para la cual necesitaba agregar Configuration.EnvironmentVariables. Mi código es el siguiente:

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

Curiosamente, la única usingdeclaración que necesitaba era using Microsoft.Extensions.Configuration.

Ed Graham avatar Dec 30 '2017 20:12 Ed Graham