我使用“dotnet new console”制作了最简单的程序:
“Program.cs”包含一行:
Console.WriteLine(File.ReadAllText("input.txt").ToString());
“input.txt”与 Program.cs 位于同一文件夹中,并包含一行:
Hello, world!
当我从控制台窗口执行“dotnet run”时,我得到了所需的结果:input.txt 的内容被写入 stdout。
但是,当我在 VSCode 中运行关联项目时,出现以下未处理的异常:
System.IO.FileNotFoundException: Could not find file 'C:\Users\user\Code\newConsole4\bin\Debug\net9.0\input.txt'
如何让 VSCode 从 program.cs 所在的同一文件夹中读取 input.txt 文件?
在 VSCode 中打开的文件夹 选择运行并调试
预计 input.txt的内容被写入stdout
观察到 未处理的异常:System.IO.FileNotFoundException:找不到文件'C:\ Users \ user \ Code ewConsole4 in\调试 et9.0\input.txt'
当您使用调试器在 VS-Code 中运行项目时,工作目录设置为 bin/Debug/netX.X/ 文件夹,而不是包含 Program.cs 文件的文件夹,就会出现问题。该程序在工作目录中查找 input.txt,但由于它位于根项目文件夹中,因此会抛出 FileNotFoundException。
您需要确保在构建过程中将 input.txt 复制到输出目录,或者调整代码以在正确的位置找到该文件。
简单的解决方案:
<ItemGroup>
<None Update="input.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>