使用配置文件发布 C# 项目

publish the C# project with configuration file

我要发布C#项目,Visual Studio 2019 ,WPF.

首先,应用发布; 二、安装应用; 三、应用安装完成后弹出一个window,显示错误:"An error occurred while loading the configuration file"

我想把配置文件放在发布应用程序中。

[Visual Studio 2019 WPF 中的代码][2]

(MainWindow.cs)

private void MainWindow_OnContentRendered(object sender, EventArgs e) { //加载配置文件 尝试 { 配置=RimageConfig.LoadFromFile("config.json"); } 抓住 { ShowError**("An error occurred while loading the configuration file", 关闭);** return; }

(config.json) { "Rk": 0.3167,// "Rb":-1.6349, "Rg": 8.6982, "Rt": 200, //"CLeft": 655, //655 "CLeft": 520, //655 "CTop": 120, "CWidth": 2350, "CHeight": 2300, "Pa": 100, "Pb": 30, //"Pa": 255, //"Pb": 0, }

一个配置文件可能不应该在编译时静态定义,否则它会破坏其稍后无需重建即可编辑的目的。

您的应用程序应该可以在没有有效配置文件的情况下启动,因为该文件将由最终用户编辑并因此包含错误。

如果您只需要一个静态配置文件,您可以将您的配置文件"Build Action"更改为"Embedded Resource"并使用Assembly.GetExecutingAssembly().GetManifestResourceStream()方法加载它。这意味着它们在构建后将不再可编辑。

如果配置文件不存在,您也可以让代码在启动时创建配置文件,并用默认值填充它(例如,使用从嵌入式配置文件加载的默认值)。

尝试将 "Copy to Output Directory" 属性 设置为 "Copy always" 或 "Copy if newer"。要在 Visual Studio 2019 年做到这一点:

  • 转到解决方案资源管理器
  • 导航到您的配置文件
  • 右击它
  • 属性
  • Select 期望 "Copy to Output Directory" 价值

这应该确保,当您使用 Publish 方法时,配置将被复制到发布目录。

编辑: 正如 Corentin 所指出的,在我最初的回答中,我忽略了您正在使用 ClickOnce 的事实。在这种情况下,您必须转到文件属性并将 "Build Action" 设置为 Content。然后转到 Project -> Properties -> Publish,单击 Application Files... 并确保您的配置的发布状态和下载组分别设置为 Include(Required)