VS Code中C#项目读取同目录本地文件失败的解决方法
解决VS Code调试时无法读取项目根目录文件的问题
核心原因:dotnet run默认以项目根目录作为工作目录,而VS Code调试模式的默认工作目录是编译后的输出目录(即报错里的C:\Users\user\Code\newConsole4\bin\Debug\net9.0\),代码里的相对路径会指向这个输出目录,自然找不到原本在项目根目录的input.txt。
下面是两种实用解决办法:
方法一:修改调试工作目录为项目根目录
- 在VS Code的「运行和调试」面板中,创建或打开
launch.json文件(若没有则选择.NET Core环境生成默认配置) - 在调试配置项里添加
"cwd": "${workspaceFolder}",示例配置如下:
{ "version": "0.2.0", "configurations": [ { "name": ".NET Core Launch (console)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceFolder}/bin/Debug/net9.0/newConsole4.dll", "args": [], "cwd": "${workspaceFolder}", // 指定工作目录为项目根 "console": "internalConsole", "stopAtEntry": false } ] }
保存后重启调试,代码就能正常读取项目根目录的input.txt。
方法二:将文件自动复制到输出目录
如果希望调试、发布后都能正常读取文件,可修改项目配置让构建时自动复制文件:
- 打开项目的
.csproj文件 - 添加以下内容:
<ItemGroup> <None Include="input.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
之后每次构建或调试,最新的input.txt都会被复制到输出目录,不管用dotnet run还是VS Code调试都能正常读取。
内容的提问来源于stack exchange,提问作者crcpop
相关产品推荐
相关产品推荐

