我正在使用.net Core 3.00
创建一个WPF项目,并且在将项目appsettings.json
文件添加到要用于存储数据库连接字符串的项目时遇到了麻烦。
我通常会在app.config
内部完成操作,但是现在已从.net Core
中删除了此操作。
到处都提到要使用appsettings.json
进行替换,并且必须使用OnStartUp()
实例在IConfiguration
函数中手动添加和初始化它,然后再使用依赖注入(inject)将config类传递到项目中。
但是我的问题是只能在appsettings.json
项目上添加asp.net Core
项目??不是我的WPF解决方案。
如果我很想念东西(我大概是这样),我会采取行动,我似乎找不到任何解决办法。
提前谢谢了
最佳答案
步骤:
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
copy it to output directory
设置为copy if newer
AppSetting.json
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Program.cs(用于.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(对于.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));
}
}
引用: