I am creating a WPF project using .net Core 3.00
, and I am having trouble adding the item appsettings.json
file to my project which is to be used
It's no requirement to switch to an appsettings.json
file in .NET Core. You may still use the very same "old" XML-based App.config
file in a WPF app that targets .NET Core if you want to.
Just add a new configuration file (Project->Add New Item->Application Configuration File) to your project and name it "App.config". If you then add the following contents to it:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connectionString" connectionString="..."/>
</connectionStrings>
</configuration>
...you should be able to get the connection string at runtime using the ConfigurationManager
API:
ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
The default WPF template should include the System.Configuration.ConfigurationManager package by default.
add an App.config file to the root of your project and add this code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="AppConnectionString" connectionString="YourCS"/>
</connectionStrings>
<appSettings>
<add key="DefaultLanguage" value="1"/>
</appSettings>
</configuration>
appSettings is with S not s
Now you can read these anywhere of your dotnet core wpf app:
string DefaultLanguage = ConfigurationManager.AppSettings.Get("DefaultLanguage");
string ConnectionString = ConfigurationManager.ConnectionStrings["AppConnectionString"].ConnectionString;
Steps:
To Add the following nuget packages
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
You would need to create and add appsettings.json manually and set copy it to output directory
as copy if newer
AppSetting.json
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Program.cs (For .NetCore Console App)
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 (For .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));
}
}
References: