You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MSIX包中正确包含WPF .NET Core应用的依赖文件?

解决MSIX打包后WPF .NET Core应用加载配置文件失败的问题

核心问题原因

MSIX应用运行在沙箱环境中,默认工作目录是System32,而非可执行文件所在目录。你直接使用/Resources/xxx.json这类硬编码路径,会被解析到System32下,自然找不到目标文件。而XAML中的图片能正常加载,是因为WPF的资源查找机制会自动定位到应用安装目录的资源路径,和代码里直接调用File.ReadAllText的文件系统访问逻辑完全不同。

解决方案步骤

1. 修正配置文件路径获取逻辑

不要硬编码路径,通过应用程序基目录拼接正确的文件路径:

  • 用AppContext.BaseDirectory获取可执行文件所在的MSIX安装目录
  • 借助Path.Combine拼接资源路径,保证跨平台兼容性

示例代码替换:

// 原错误写法
var configPath = "/Resources/PatientInformationLeafletConfiguration.json";

// 修正后写法
var configPath = Path.Combine(AppContext.BaseDirectory, "Resources", "PatientInformationLeafletConfiguration.json");
var config = SerializationService.FromJSONFile<PatientInformationLeafletConfig>(configPath);

2. 确保配置文件被正确打包

  • 在主WPF项目中选中所有配置文件(.json、.csv等),在属性窗口设置:
    • 复制到输出目录:选择「始终复制」或「如果较新则复制」
    • 生成操作:选择「内容」
  • 检查MSIX打包项目的「应用程序」选项卡,确认已包含主WPF项目的输出,确保资源文件会同步打包到MSIX包内的对应路径。

3. 验证包内文件结构

安装MSIX后,可打开C:\Program Files\WindowsApps\<你的包名>(需开启显示隐藏文件并获取目录权限),检查是否存在Resources目录,且配置文件是否在该目录下,以此确认打包是否正确。

额外注意事项

MSIX包的安装目录是只读的,如果需要修改配置文件,不能直接写入这个目录,需先将文件复制到ApplicationData.Current.LocalFolder等沙箱可写入目录后再操作。如果仅需读取配置,上述方案完全适用。

内容的提问来源于stack exchange,提问作者user1752971

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:12:02