我看到有一些方法可以获取应用程序文件夹路径:
Application.StartupPath
System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
AppDomain.CurrentDomain.BaseDirectory
System.IO.Directory.GetCurrentDirectory()
Environment.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可能是程序集下载缓存。不保证为GAC中的程序集设置CodeBase 。
CodeBase
Location