Cannot add appsettings.json inside WPF project .net core 3.0

前端 未结 3 367
梦谈多话
梦谈多话 2020-12-29 09:06

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

相关标签:
3条回答
  • 2020-12-29 09:21

    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.

    0 讨论(0)
  • 2020-12-29 09:31

    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;
    
    0 讨论(0)
  • 2020-12-29 09:35

    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:

    • 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
    0 讨论(0)
提交回复
热议问题