我正在使用.net Core3.0创建一个WPF项目,我在将项目中添加项目appsettings.json
文件时遇到了困难,该项目将用于存储我的DB连接字符串。
我通常会在app.config
中这样做,但是现在这已经从.net核心中删除了。
任何地方都提到使用appsettings.json
作为替代,并且必须使用IConfiguration
实例在OnStartUp()
函数中添加和初始化它,并且在使用依赖项注入将配置类传递到项目之后。
但我的问题是,它只能在appsettings.json
核心项目上添加asp.net项吗?不是我的WPF解决方案。
我很抱歉,如果我错过了一些非常明显的东西(我可能就是这样),我只是找不到任何解决办法。
发布于 2020-01-25 12:57:37
步骤:
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核心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));
}
}
参考资料:
发布于 2020-01-27 15:46:10
不需要切换到appsettings.json
核心中的.NET文件。您仍然可以在WPF应用程序中使用相同的“旧的”基于XML的App.config
文件,如果您愿意的话,该应用程序的目标是.NET核心。
只需向项目中添加一个新的配置文件( project ->Add >),并将其命名为"App.config“。如果然后向其添加以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connectionString" connectionString="..."/>
</connectionStrings>
</configuration>
...you应该能够在运行时使用ConfigurationManager
API获得连接字符串:
ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
默认情况下,默认的WPF模板应该包括System.Configuration.ConfigurationManager包。
发布于 2021-04-30 18:22:24
我找到了一条捷径。
https://stackoverflow.com/questions/59909207
复制相似问题