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

从Visual Studio运行C#项目时出现File not found exception的解决办法

解决Visual Studio运行C#程序时找不到同目录文件的问题

这个坑我之前也踩过!核心原因就是Visual Studio默认的工作目录和你手动运行exe时的目录不一样——当你从VS启动程序时,它默认把项目根目录(就是放.csproj文件的那个文件夹)作为当前工作目录,而非exe所在的bin/x64/Debug或Release目录,所以直接用相对路径input.txt自然找不到文件。

下面给你三种靠谱的解决办法,按需选就行:

方法1:修改Visual Studio的调试工作目录

这是调试时最直接的方案,让VS运行程序时自动切换到exe所在的输出目录:

  • 右键你的项目 → 选择「属性」
  • 切换到「调试」标签页
  • 在「工作目录」输入框里,把默认值改成 $(TargetDir)(这个宏会自动对应当前配置的输出目录,Debug/Release都能适配)
  • 保存设置后再运行,就能正常读取input.txt了

方法2:在代码中动态获取exe所在目录(生产环境推荐)

如果想让程序不管在哪运行都能精准找到同目录文件,最好在代码里通过程序集信息获取正确路径,别依赖相对路径。示例代码如下:

using System.IO;
using System.Reflection;

// 获取当前可执行文件的所在目录
// 方式A:.NET Core/.NET 5+推荐用AppContext
string exeDirectory = AppContext.BaseDirectory;
// 方式B:兼容所有.NET版本,用Assembly
// string exeDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

// 拼接input.txt的完整路径
string inputFilePath = Path.Combine(exeDirectory, "input.txt");

// 之后用inputFilePath读取文件就没问题了

这种方法的优势是通用性拉满——不管是VS调试、手动双击exe,还是把程序部署到其他地方,都能准确找到目标文件。

方法3:设置文件自动复制到输出目录

先确保input.txt会被自动同步到exe所在的输出目录,避免手动拷贝的麻烦:

  • 在解决方案资源管理器里右键input.txt → 选择「属性」
  • 在「复制到输出目录」下拉菜单中,选「如果较新则复制」或「始终复制」
  • 这样每次编译时,文件都会自动同步到bin/x64/Debug或Release目录

不过要注意:如果只改这个但没调整工作目录,从VS运行时还是得用bin/x64/Debug/input.txt这种路径才能访问,所以更建议搭配方法1或方法2一起用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:12:34