'配置文件'appsettings.json'未找到且不可选。物理路径是'C:\Windows\SysWOW64 ppsettings.json'。'

问题描述 投票:0回答:2

我正在尝试在我的 WinUI 桌面应用程序中实现配置文件。我不断收到以下错误。

System.IO.FileNotFoundException: 'The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\Windows\SysWOW64\appsettings.json'.'

我已将构建操作设置为内容,并将副本设置为输出直接到更新的副本。但没有任何效果。

Appsettings properties

我的App.xaml.cs代码是。

using Microsoft.Extensions.Hosting;
using Microsoft.UI.Xaml;

namespace ManagementSystem.Web
{
    public partial class App : Microsoft.UI.Xaml.Application
    {
        public App()
        {
            this.InitializeComponent();
        }

    protected override void OnLaunched(LaunchActivatedEventArgs args)
    {
        IHost host = CreateHostBuilder(args).Build();

        using (IServiceScope scope = host.Services.CreateScope())
        {
            IServiceProvider services = scope.ServiceProvider;
            MainWindow MainWindow = services.GetRequiredService<MainWindow>();

            MainWindow.Activate();
        }
    }

    private static IHostBuilder CreateHostBuilder(LaunchActivatedEventArgs args) =>
        Host.CreateDefaultBuilder()
            .ConfigureAppConfiguration((_, config) =>
            {
                config.SetBasePath(Directory.GetCurrentDirectory());
                config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .ConfigureServices((_, services) =>
            {
                services.AddOptions();
                services.ConfigureServices();
            });
}

我不知道为什么会发生这种情况。我尝试用谷歌搜索,但找不到任何关于为什么会发生这种情况的信息。

c# xaml .net-core desktop-application winui
2个回答
1
投票

经过一番搜索,我找到了解决我的问题的方法。

在将 Json 文件添加到我的管道之前调用以下代码行解决了该问题。

config.SetBasePath(Package.Current.InstalledLocation.Path);

0
投票

解决方案是将可选属性设置为true

 IConfigurationBuilder builder = new ConfigurationBuilder() .AddJsonFile(Path.GetFullPath(System.IO.Path.Combine(Directory.GetCurrentDirectory(), @"..\..\sampleProject\sample\appsettings.json")), optional: true);
© www.soinside.com 2019 - 2024. All rights reserved.