Environment.CurrentDirectory与System.Reflection的区别

5
以下是获取执行程序集的工作目录的几种方法,是否有推荐的最佳实践?我从我的开发人员那里听说,方法1在Windows 7 SP1 64位上有时候会失败,除非以提升的权限运行(以管理员身份运行)。但是方法2始终有效。为什么前者有时会失败呢?
方法1:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location())

方法二:
Environment.CurrentDirectory
1个回答

6

Environment.CurrentDirectory是获取工作目录的正确方式。使用反射可能会更慢。

但要注意:这两种方法并不相同:方法A始终返回存储程序集的目录,而Environment.CurrentDirectory给出的是当前工作目录,可以在应用程序生命周期内发生变化,因为Environment.CurrentDirectory也可以用于设置工作目录,其他方法也可以更改它(例如文件打开/保存对话框)。


谢谢!这是一个相当好的警告(我刚刚给你点了赞)。有没有什么原因导致它在Win 7 64位Sp1上“有时候”失败? - user1129208
@RomulusParthus:很抱歉我无法帮助你解决这个问题——也许是汇编代码存储的位置,但这只是一个猜测…… - Christoph Fink
如果没有更多的帖子在这个主题下,我会将chrfin的建议标记为答案。 - user1129208

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接