Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

569
Views
No se puede agregar appsettings.json dentro del proyecto WPF .net core 3.0

Estoy creando un proyecto WPF usando .net Core 3.00 y tengo problemas para agregar el archivo appsettings.json del elemento a mi proyecto, que se usará para almacenar mi cadena de conexión de base de datos.

Normalmente lo habría hecho dentro de app.config , pero ahora se eliminó de .net Core .

En todas partes se menciona el uso de appsettings.json como reemplazo, y que debe agregarse e inicializarse manualmente en la función OnStartUp() usando una instancia de IConfiguration , y luego usar Inyección de dependencia para pasar la clase de configuración al proyecto.

Pero mi problema es que solo puedo agregar el elemento appsettings.json en los proyectos de asp.net Core . no es mi solución WPF.

Pido disculpas si me estoy perdiendo algo muy obvio (que probablemente sea así), simplemente parece que no puedo encontrar ninguna solución.

Muchas gracias de antemano

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Pasos:

  • Para agregar los siguientes paquetes nuget

     Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions Microsoft.Extensions.Configuration.Json Microsoft.Extensions.DependencyInjection
  • Debería crear y agregar appsettings.json manualmente y configurar copy it to output directory como copy if newer


AppSetting.json

 { "ConnectionStrings": { "BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;" }, }

Program.cs (para la aplicación de consola .NetCore)

 static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); IConfigurationRoot configuration = builder.Build(); Console.WriteLine(configuration.GetConnectionString("BloggingDatabase")); }

App.xaml.cs (para .NET CORE WPF)

 public partial class App : Application { public IServiceProvider ServiceProvider { get; private set; } public IConfiguration Configuration { get; private set; } protected override void OnStartup(StartupEventArgs e) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); Configuration = builder.Build(); Console.WriteLine(Configuration.GetConnectionString("BloggingDatabase")); var serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); ServiceProvider = serviceCollection.BuildServiceProvider(); var mainWindow = ServiceProvider.GetRequiredService<MainWindow>(); mainWindow.Show(); } private void ConfigureServices(IServiceCollection services) { // ... services.AddTransient(typeof(MainWindow)); } }

Referencias:

  • https://blog.bitscry.com/2017/05/30/appsettings-json-in-net-core-console-app/
  • https://marcominerva.wordpress.com/2019/03/06/using-net-core-3-0-dependency-injection-and-service-provider-with-wpf/
  • https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings
over 4 years ago · Santiago Trujillo Report

0

No es un requisito cambiar a un archivo appsettings.json en .NET Core. Todavía puede usar el mismo archivo App.config "antiguo" basado en XML en una aplicación WPF que apunta a .NET Core si lo desea.

Simplemente agregue un nuevo archivo de configuración (Proyecto-> Agregar nuevo elemento-> Archivo de configuración de la aplicación) a su proyecto y asígnele el nombre "App.config". Si luego le agregas los siguientes contenidos:

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="connectionString" connectionString="..."/> </connectionStrings> </configuration>

... debería poder obtener la cadena de conexión en tiempo de ejecución utilizando la API de ConfigurationManager :

 ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

La plantilla de WPF predeterminada debe incluir el paquete System.Configuration.ConfigurationManager de forma predeterminada.

over 4 years ago · Santiago Trujillo Report

0

agregue un archivo App.config a la raíz de su proyecto y agregue este código:

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="AppConnectionString" connectionString="YourCS"/> </connectionStrings> <appSettings> <add key="DefaultLanguage" value="1"/> </appSettings> </configuration>

appSettings es con S no s

Ahora puede leerlos en cualquier lugar de su aplicación dotnet core wpf:

 string DefaultLanguage = ConfigurationManager.AppSettings.Get("DefaultLanguage"); string ConnectionString = ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString;
over 4 years ago · Santiago Trujillo Report

0

Encontré un camino corto.

  1. Instalar el paquete Microsoft.Extensions.Configuration.Json

  2. Crear AppSetting.json en solución

     { "ConnectionStrings": { "MyDataBase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;" } }
  3. Crear método GetConnectionString

     public string GetConnectionString(string connectionStringName) { var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var configurationRoot = builder.Build(); var connectionString = configurationRoot.GetConnectionString(connectionStringName); return connectionString; }
  4. Método de llamada GetConnectionString en OnConfiguring

     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); var connectionString = GetConnectionString("MyDataBase"); optionsBuilder.UseLazyLoadingProxies().UseSqlServer(connectionString); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!