我是C#的新手.创建了一个C#应用程序,它从文件中读取并进行一些处理.我手动将文件放在下面myProject/bin/Debug/files/ (注意:手动复制粘贴文件,不确定我是否需要通过应用程序以任何方式导入 - 使用SharpDevelop IDE).我的代码通过读取文件
string query = File.ReadAllText(@"files\myfile.txt");
Run Code Online (Sandbox Code Playgroud)
在我构建并将其传递给客户端并且它们在单击时工作正常后myproject.exe,它可以找到该文件.但是当他们使用Windows任务调度程序触发它时,他们得到的错误是:
System.IO.DirectoryNotFoundException:无法在d:\ workspace\test\Program.cs中的extractor.Program.query()中找到路径'C:\ Windows\system\files\myfile.txt'...的一部分:第81行(这是我的本地路径,改为显示客户端的文件夹路径)
需要帮助:
myfile.txt根据需要灵活地进行更改,而无需触及.exe(无需再次构建)@"files\myfile.txt")的正确方法.感谢帮助.
您的错误消息中有两种不同的路径在播放.
错误的本地路径
第一个是应用程序尝试查找文件的路径.这,你的错误是
C:\ WINDOWS\SYSTEM \文件\ myfile.txt的
搜索此路径是因为File.ReadAllText,当给定相对路径名称时,将在当前目录下搜索,该目录不一定是安装应用程序的目录 - 可以通过调用Directory.SetCurrentDirectory第三方组件甚至使用Open 来更改它文件对话框.
您需要做的是不使用相对路径,而是明确指定文件的位置.你可以通过获取当前正在执行的EXE路径并附files\myfiles.txt加到它来实现.您可以使用获取当前的EXE路径Assembly.GetExecutingAssembly().Location.
开发者路径
您的错误消息似乎指向开发人员计算机上的路径,但实际上这不是.NET查找hte文件的位置,而是原始C#文件的位置,其中引发了异常.这是因为您包含了包含额外调试信息的PDB文件 - 此调试信息包含开发工作空间路径,因此您可以在代码中找到错误.