gpt4 book ai didi

c# - 无法在 WPF 项目 .net core 3.0 中添加 appsettings.json

转载 作者:行者123 更新时间:2023-12-03 05:31:22 28 4
gpt4 key购买 nike

我正在使用 .net Core 3.0 创建一个 WPF 项目,但在添加项目 appsettings.json 时遇到问题文件到我的项目,用于存储我的数据库连接字符串。
我通常会在 app.config 内完成,但现在已从 .net Core 中删除。
处处提及使用 appsettings.json作为替代,它必须在 OnStartUp() 中手动添加和初始化使用 IConfiguration 实例的函数,然后使用依赖注入(inject)将配置类传递到项目中。
但我的问题是只能添加appsettings.json asp.net 核心项目上的项目?不是我的 WPF 解决方案。
如果我遗漏了一些非常明显的东西(我可能是),我深表歉意,我似乎找不到任何解决方案。

最佳答案

步骤:

  • 添加以下 nuget 包
      Microsoft.Extensions.Configuration
    Microsoft.Extensions.Configuration.FileExtensions
    Microsoft.Extensions.Configuration.Json
    Microsoft.Extensions.DependencyInjection
  • 您需要手动创建和添加 appsettings.json 并设置 copy it to output directorycopy 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));
    }
    }

    引用文献:
  • 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
  • 关于c# - 无法在 WPF 项目 .net core 3.0 中添加 appsettings.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909207/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com