Environment.CurrentDirectory vs System.Reflection

时间:2012-01-20 10:17:19

标签: .net system.reflection

通过以下方法获取正在执行的程序集的工作目录,是否建议将哪一个视为最佳实践?我从我的开发人员那里听说,方法1在Windows 7 SP1 64位有时上失败,除非使用提升的权限运行(以管理员身份运行)。但方法2始终有效。前者有时会失败吗?

方法1:

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location())

方法2:

Environment.CurrentDirectory

1 个答案:

答案 0 :(得分:6)

Environment.CurrentDirectory是获取工作目录的方法。使用反射也可能更慢。

但要小心:两种方法不一样:方法A总是返回存储程序集的目录,其中Environment.CurrentDirectory为您提供当前工作目录,该目录可以在应用程序生命周期内更改,如Environment.CurrentDirectory也可用于设置工作目录,其他方法也可以更改它(例如文件打开/保存对话框)。