获取应用程序文件夹路径的最佳方法 [英] Best way to get application folder path

查看:39
本文介绍了获取应用程序文件夹路径的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到有一些方法可以获取应用程序文件夹路径:

I see that there are some ways to get the application folder path:

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

视情况而定,最好的方法是什么?

What is the best way depending on the situation?

推荐答案

AppDomain.CurrentDomain.BaseDirectory 可能对于访问位置相对于应用程序安装目录的文件最有用.

AppDomain.CurrentDomain.BaseDirectory is probably the most useful for accessing files whose location is relative to the application install directory.

在 ASP.NET 应用程序中,这将是应用程序根目录,而不是 bin 子文件夹 - 这可能是您通常想要的.在客户端应用程序中,它将是包含主要可执行文件的目录.

In an ASP.NET application, this will be the application root directory, not the bin subfolder - which is probably what you usually want. In a client application, it will be the directory containing the main executable.

在 VSTO 2005 应用程序中,它将是包含应用程序的 VSTO 托管程序集的目录,而不是 Excel 可执行文件的路径.

In a VSTO 2005 application, it will be the directory containing the VSTO managed assemblies for your application, not, say, the path to the Excel executable.

其他人可能会根据您的环境返回不同的目录 - 例如,请参阅 @Vimvq1987 的回答.

The others may return different directories depending on your environment - for example see @Vimvq1987's answer.

CodeBase 是找到文件的地方,可以是一个以 http://开头的 URL.在这种情况下,Location 可能是程序集下载缓存.不保证为 GAC 中的程序集设置 CodeBase.

CodeBase is the place where a file was found and can be a URL beginning with http://. In which case Location will probably be the assembly download cache. CodeBase is not guaranteed to be set for assemblies in the GAC.

更新现在(.NET Core、.NET Standard 1.3+ 或 .NET Framework 4.6+)最好使用 AppContext.BaseDirectory 而不是 AppDomain.CurrentDomain.BaseDirectory.两者都是等价的,但不再支持 多个 AppDomains.

UPDATE These days (.NET Core, .NET Standard 1.3+ or .NET Framework 4.6+) it's better to use AppContext.BaseDirectory rather than AppDomain.CurrentDomain.BaseDirectory. Both are equivalent, but multiple AppDomains are no longer supported.

这篇关于获取应用程序文件夹路径的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆