AppData 文件夹中的 .Net 应用 installed/running?

.Net app installed/running in AppData folder?

我有一个 WPF 应用程序(安装在 Windows 10 台机器上)依赖于 XML 文件的各种数据元素。

构建应用并安装后,应用和XML文件被部署到不同的文件夹,如下:

XML 文件
[AppData\Local\Apps...]\vita..tion_4af4e5dd3b243aa8_0001.0000_fa5707b5107abce1

EXE
[AppData\Local\Apps...]\vita..tion_4af4e5dd3b243aa8_0001.0000_f75ca9501de16621

这会阻止我使用类似这样的方式访问我的文件:

    Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\XML\GeneralInfo.xml";

问题

谢谢!

编辑

使用发布向导(或立即发布)发布应用。

XML 个文件标记为 构建操作:"Content" 和 复制到输出目录:"Copy Always" 在属性中。

我相信这是正常行为不是一些奇怪的混乱发布的结果¹。

尝试使用以下方式访问您的文件:

var deployment = ApplicationDeployment.CurrentDeployment;

var pathToXml = Path.Combine(deployment.DataDirectory, "MyFile.xml");

您必须在申请中添加对 System.Deployment 的引用。

希望对您有所帮助:)

-

¹ 来自 Chester Hong 对 this 问题的回答:

Each ClickOnce application is installed in per-user, per-application cache folder. You can find the folder like:

C:\Users\username\AppData\Local\Apps.0

You can go to Publish tab and click Application Files button. The files whose Publish Status are Data File will be installed into data folder, which you can specify by CurrentDeployment.DataDirectory property.

(少数部分由我省略、调整和突出显示)