.NET Core 3.1 WPF应用配置文件存储位置咨询
.NET Core 3.1 WPF设置文件找不到?看这里!
这绝对是.NET Framework转.NET Core时最容易踩的坑之一——你没记错,.NET 4.5里的配置文件确实在应用目录,但.NET Core 3.1彻底改了设置的存储逻辑!
核心原因:存储路径变了
.NET Core为了适配现代系统的权限规则(避免写入安装目录时的权限问题),把设置文件存在了用户专属的应用数据目录里,而不是程序的安装路径。
具体路径(Windows系统)
默认路径长这样:
C:\Users\<你的用户名>\AppData\Local\<应用程序的公司名称>\<应用名>_<一串随机哈希值>\<应用版本号>
举个例子,如果你的用户名是julian,应用名是MyWpfApp,路径可能是:
C:\Users\julian\AppData\Local\MyCompany\MyWpfApp_abc123def456\1.0.0.0
注意:
AppData是隐藏文件夹,需要在文件资源管理器里开启「显示隐藏的项目」才能看到。
怎么快速找到你的设置文件?
直接在代码里打印出设置文件的实际路径就行!在你保存设置的代码后面加一行:
// 假设你的设置实例是config.Default MessageBox.Show(config.Default.FilePath);
运行程序后,弹窗里的路径就是你的设置文件所在位置,直接复制到文件资源管理器就能找到user.config(没错,文件名也从config.xml变成user.config了!)
为什么这么设计?
- 权限友好:现代Windows系统默认禁止普通程序写入Program Files等安装目录,存在用户私有目录不会触发UAC弹窗或权限错误
- 数据隔离:不同用户使用同一应用时,各自的设置是独立的,不会互相干扰
- 版本兼容:应用更新后,旧版本的设置会被保留,不会因为覆盖安装丢失
验证一下
按上面的方法找到user.config,打开后你会看到你保存的LastUpdate值就在里面,和你代码里写入的一致——这就说明设置确实正常保存了,只是位置变了而已!
内容的提问来源于stack exchange,提问作者julian bechtold




