dav*_*e.2 30 .net c# wpf .net-core-3.0
我正在使用 来创建一个 WPF 项目.net Core 3.00
,但我无法将项目appsettings.json
文件添加 到我的项目中,该项目用于存储我的数据库连接字符串。
我通常都在里面做app.config
,但是现在已经被从中移除.net Core
。
到处都提到使用appsettings.json
作为替代,并且必须OnStartUp()
使用 的实例在函数中手动添加和初始化IConfiguration
,然后使用依赖注入将配置类传递到项目中。
但我的问题是只能在appsettings.json
项目上 添加asp.net Core
项目??不是我的 WPF 解决方案。
如果我遗漏了一些非常明显的东西(我可能是),我会做 appolgies,我似乎无法找到任何解决方案。
提前谢谢了
Cli*_*int 45
脚步:
添加以下nuget包
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
Run Code Online (Sandbox Code Playgroud)
您需要手动创建和添加 appsettings.json 并设置copy it to output directory
为copy if newer
应用设置.json
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Run Code Online (Sandbox Code Playgroud)
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"));
}
Run Code Online (Sandbox Code Playgroud)
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));
}
}
Run Code Online (Sandbox Code Playgroud)
参考:
mm8*_*mm8 13
不需要切换到appsettings.json
.NET Core 中的文件。如果需要,您仍然可以在App.config
面向 .NET Core 的 WPF 应用程序中使用完全相同的“旧”基于 XML 的文件。
只需在您的项目中添加一个新的配置文件(Project->Add New Item->Application Configuration File)并将其命名为“App.config”。如果您然后向其中添加以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connectionString" connectionString="..."/>
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
...您应该能够在运行时使用ConfigurationManager
API获取连接字符串:
ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
默认 WPF 模板应默认包含System.Configuration.ConfigurationManager包。