我看到有一些方法来获得应用程序文件夹路径:
应用程序。StartupPath
System.IO.Path.GetDirectoryName (
System.Reflection.Assembly.GetExecutingAssembly () .Location)
AppDomain.CurrentDomain.BaseDirectory
System.IO.Directory.GetCurrentDirectory ()
环境。CurrentDirectory
System.IO.Path.GetDirectoryName (
System.Reflection.Assembly.GetExecutingAssembly () . getname () .CodeBase)
System.IO.Path.GetDirectory (Application.ExecutablePath)
根据具体情况,最好的方法是什么?
AppDomain.CurrentDomain.BaseDirectory可能是访问位置相对于应用程序安装目录的文件最有用的目录。
在ASP中。NET应用程序,这将是应用程序的根目录,而不是bin子文件夹-这可能是您通常想要的。在客户端应用程序中,它将是包含主要可执行文件的目录。
在VSTO 2005应用程序中,它将是包含应用程序的VSTO托管程序集的目录,而不是Excel可执行文件的路径。
其他选项可能会根据您的环境返回不同的目录—例如,请参阅@Vimvq1987的答案。
CodeBase是找到文件的地方,可以是以http://.开头的URL在这种情况下,Location可能是程序集下载缓存。CodeBase不保证为GAC中的程序集设置。
更新
这些天….NET Core, .NET Standard 1.3+或.NET Framework 4.6+),最好使用AppContext。而不是AppDomain.CurrentDomain.BaseDirectory。两者是等效的,但不再支持多个appdomain。