c# - 什么会导致正在执行的应用程序的当前目录发生变化?

标签 c# .net filesystems working-directory

我有一个包含以下代码的 C# 应用程序:

string file = "relativePath.txt";

//Time elapses...

string contents = File.ReadAllText(file);

这在大多数情况下都很好用。该文件是相对于启动应用程序的目录读取的。但是,在测试中发现,如果放置约 5 小时,该应用程序将抛出 FileNotFoundException 提示“C:\Documents and Settings\Adminstrator\relativePath.txt”无法打开成立。如果读取文件的操作立即运行,则会从正确的位置读取文件,我们称之为“C:\foo\relativePath.txt”

什么给了?而且,最好的解决办法是什么?正在根据 Assembly.GetEntryAssembly().Location 解析文件?

最佳答案

OpenFileDialog 是一个可以改变路径的诡异地方。当用户在文件夹之间导航时,它会将您的应用程序目录更改为当前正在查看的目录。如果用户在不同的目录中关闭对话框,那么您将被困在该目录中。

它有一个名为 RestoreDirectory 的属性这会导致对话框重置路径。但我相信默认值是“false”。

关于c# - 什么会导致正在执行的应用程序的当前目录发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/158219/

相关文章:

c# - Gmail API - 值 '= Get Labels google-api-dotnet-client/1.25.0.0 (gzip)' 的格式无效

C# - 从静态类中获取静态属性的值

c# - 如何从带有进度条的 winforms 通过 https 上传大文件(~4mb)?

c# - GeoCoordinate.GetDistanceTo 使用错误的地球半径?

c# - 我制作了一个矩形如何检查鼠标是否点击了它?

c# - 能否从某种方法名称集合创建 C# 4.0 中的多播委托(delegate)?

c# - 使用 64 位项目中的 32 位库 - .NET

javascript - 具有快进/快退功能的流式 mp3 文件 express 服务器

linux - "/etc"在Zen of Unix/GNU Linux中的作用

java - 使用 Java 在 Linux 上查找给定文件的根目录