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

如何在未知临时文件夹的PublishSingleFile格式exe中定位内容文件

编辑 实际上我之前判断有误,对问题的诊断出错了。

.NET Core 3+版本中使用SingleFile发布时AppContext.BaseDirectory确实存在bug,但该问题已在.NET 5中修复。

我是在WPF程序关闭时启用基础日志系统调试已发布应用时发现该问题的。

我之前的错误在于使用pack URI访问内容文件。

pack URI始终是相对于执行路径的相对路径,在SingleFile发布场景下,执行路径对应临时解压文件夹,因此无法找到存储在AppContext.BaseDirectory下的内容文件。

所以我去掉了pack URI的使用(不再给相对路径拼接pack://application:,,前缀),改用绝对路径Path.Combine(AppContext.BaseDirectory, @"MyContentFile")实现访问。

原始问题记录如下:

我有一个可正常运行的WPF应用,包含资源文件和内容文件(部分为配置文件、支持用户修改的图标文件)。
使用dotnet publish命令发布时程序运行正常,但添加-p:PublishSingleFile=true参数发布为单文件时,生成的应用会静默解压到随机临时文件夹中,我之前使用的Path.Combine(AppContext.BaseDirectory, @"MyContentFile")逻辑不再生效,因为此时AppContext.BaseDirectory指向的是我无法预知的临时文件夹。
请问我在运行时如何从这个未知的临时解压文件夹中获取单文件程序本身的路径?该路径是我存放相对内容文件的根路径。
谢谢。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:08