通过以下方法获取正在执行的程序集的工作目录,是否建议将哪一个视为最佳实践?我从我的开发人员那里听说,方法1在Windows 7 SP1 64位有时上失败,除非使用提升的权限运行(以管理员身份运行)。但方法2始终有效。前者有时会失败吗?
方法1:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location())
方法2:
Environment.CurrentDirectory
答案 0 :(得分:6)
Environment.CurrentDirectory
是获取工作目录的方法。使用反射也可能更慢。
但要小心:两种方法不一样:方法A总是返回存储程序集的目录,其中Environment.CurrentDirectory
为您提供当前工作目录,该目录可以在应用程序生命周期内更改,如Environment.CurrentDirectory
也可用于设置工作目录,其他方法也可以更改它(例如文件打开/保存对话框)。