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

.NET 5环境下C#如何使用相对路径读取源码目录下的本地文件

解决方法

问题根因

.NET程序运行时默认将exe所在的输出目录作为工作目录,你放在源码目录的Sample.txt不会自动同步到输出目录,因此直接写相对路径会找不到文件。

可选解决方案

方案一:配置文件自动同步到输出目录(推荐,适配开发+发布场景)

该方案不需要修改程序运行逻辑,发布后也能正常使用,操作步骤如下:

  • 在Visual Studio解决方案资源管理器中找到源码目录下的Sample.txt,右键点击选择「属性」
  • 在属性面板中找到「生成操作」,设置为「内容」
  • 找到「复制到输出目录」,设置为「如果较新则复制」
    配置完成后每次生成项目,最新的Sample.txt会自动复制到exe所在的输出目录,你原有代码不需要任何修改即可正常运行。
    如果想要避免工作目录被篡改时找不到文件,可以使用更稳妥的路径拼接写法,替换原有StreamReader初始化逻辑即可:
// 获取当前程序exe所在目录
var exePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
// 拼接得到文件的绝对路径,兼容性更强
var targetFilePath = Path.Combine(exePath, "Sample.txt");
StreamReader sr = new StreamReader(targetFilePath);

方案二:修改调试阶段工作目录为源码目录(仅适合本地开发用)

如果你确实希望文件只存放在源码目录,不需要复制到输出目录,只需要修改VS调试的工作目录配置即可:

  • 右键项目名称选择「属性」,切换到「调试」选项卡
  • 找到「工作目录」配置项,将默认的输出目录路径修改为你的源码根目录(即Sample.txt存放的目录)
    配置完成后调试运行时,Directory.GetCurrentDirectory()会返回源码目录,直接写文件名相对路径即可读取到文件。

注意:该配置仅在本地VS调试时生效,程序打包发布后运行仍会默认以exe所在目录为工作目录,不适用于生产发布场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:39:00