Ø  前言

开发中,很多时候都需要获取程序运行时路径,比如:反射、文件操作等。.NET Framework 已经封装了这些功能,可以很方便的使用。

C# 中有很多类都可以获取程序运行时路径,我们没必要记住所有的,只需要记住常用的(其他了解即可),比如:

1.   System.AppDomain.CurrentDomain.BaseDirectory,获取基目录,它由程序集冲突解决程序用来探测程序集。

2.   System.Environment.CurrentDirectory,获取或设置当前工作目录的完全限定路径。

3.   System.IO.Directory.GetCurrentDirectory(),获取应用程序的当前工作目录。

4.   System.Web.HttpRuntime.BinDirectory,获取当前应用程序的 /bin 目录的物理路径。

5.   System.Windows.Forms.Application.StartupPath,获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

1.   所涉及的所有类

1)   System.AppDomain,程序集:mscorlib.dll。

2)   System.Environment,程序集:mscorlib.dll。

3)   System.IO.Directory,程序集:mscorlib.dll。

4)   System.Reflection.Assembly,程序集:mscorlib.dll。

5)   System.Diagnostics.Process,程序集:System.dll。

6)   System.Web.HttpRuntime,程序集:System.Web.dll。

7)   System.Web.HttpContext,程序集:System.Web.dll。

8)   System.Web.Hosting.HostingEnvironment,程序集:System.Web.dll。

9)   System.Windows.Forms.Application,程序集:System.Windows.Forms.dll。

2.   适用项目

1)   类库

2)   Web 应用程序

3)   ASP.NET MVC

4)   ASP.NET Web API

5)   控制台应用程序

6)   窗体应用程序

1.   System.AppDomain(程序集:mscorlib.dll)

适用项目:通用(不适合 Web API?)。

1)   CurrentDomain.BaseDirectory,获取基目录,它由程序集冲突解决程序用来探测程序集。

string path = AppDomain.CurrentDomain.BaseDirectory;    //F:\ConsoleApplication\bin\Debug\

或者(两者使用的同一个 System.AppDomain 对象实例)

string path = System.Threading.Thread.GetDomain().BaseDirectory;    //F:\ConsoleApplication\bin\Debug\

2)   CurrentDomain.SetupInformation.ApplicationBase,获取或设置包含该应用程序的目录的名称。

string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //F:\ConsoleApplication\bin\Debug\

2.   System.Environment(程序集:mscorlib.dll)

适用项目:通用(不适合 Web API?)。

1)   CurrentDirectory,获取或设置当前工作目录的完全限定路径。

string path = Environment.CurrentDirectory; //F:\ConsoleApplication\bin\Debug

2)   GetEnvironmentVariable(),从当前进程检索环境变量的值。

string path = Environment.GetEnvironmentVariable("TEMP");   // C:\Users\GOO\AppData\Local\Temp

1.   参数 variable:环境变量名。可选值:

WINDIR:C:\WINDOWS

INCLUDE:null

TMP/TEMP:C:\Users\GOO\AppData\Local\Temp

PATH:环境变量路径(很多)

2.   具体参数值可参考系统环境变量列表,如图:

3.   System.IO.Directory(程序集:mscorlib.dll)

适用项目:通用(不适合 Web API?)。

1)   GetCurrentDirectory(),获取应用程序的当前工作目录。

string path = Directory.GetCurrentDirectory();  //F:\ConsoleApplication\bin\Debug

4.   System.Assembly(程序集:mscorlib.dll)

适用项目:通用(不适合 Web API?)。

1)   GetExecutingAssembly().Location,获取包含清单的已加载文件的路径或 UNC 位置。

string path = Assembly.GetExecutingAssembly().Location; //F:\ConsoleApplication\bin\Debug\ConsoleApplication.exe

5.   System.Diagnostics.Process(程序集:System.dll)

适用项目:通用(不适合 Web API?)。

1)   GetCurrentProcess().MainModule.FileName,获取模块的完整路径。

string path = Process.GetCurrentProcess().MainModule.FileName;  //F:\ConsoleApplication\bin\Debug\ConsoleApplication.vshost.exe

6.   System.Web.HttpRuntime(程序集:System.Web.dll)

适用项目:Web 应用程序、ASP.NET MVC、ASP.NET Web API。

1)   AppDomainAppPath,获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径。

string path = HttpRuntime.AppDomainAppPath; //F:\WebForm.Basis\

2)   BinDirectory,获取当前应用程序的 /bin 目录的物理路径。

string path = HttpRuntime.BinDirectory; //F:\WebForm.Basis\bin\

7.   System.Web.HttpContext(程序集:System.Web.dll)

适用项目:Web 应用程序、ASP.NET MVC、ASP.NET Web API。

1)   Current.Server.MapPath(),将指定的虚拟路径映射到物理路径。

string path = HttpContext.Current.Server.MapPath(@"\"); //F:\WebForm.Basis\

或者

1.   Web 应用程序(两者使用的同一个 System.Web.HttpServerUtility 对象实例)

string path = base.Server.MapPath(@"\");

2.   ASP.NET MVC(使用的 System.Web.HttpServerUtilityBase 对象)

string path = base.Server.MapPath(@"\");

2)   Current.Request.MapPath(),将指定的虚拟路径映射到物理路径。

string path = HttpContext.Current.Request.MapPath(@"\");    //F:\WebForm.Basis\

或者

1.   Web 应用程序(两者使用的同一个 System.Web.HttpRequest 对象实例)

string path = base.Request.MapPath(@"\");

2.   ASP.NET MVC(使用的 System.Web.HttpRequestBase 对象)

string path = base.Request.MapPath(@"\");

3)   Current.Request.PhysicalPath,获取与请求的 URL 相对应的物理文件系统路径。

string path = HttpContext.Current.Request.PhysicalPath; //F:\WebForm.Basis\RuntimePathTest

其他项目

1.   ASP.NET MVC 结果:F:\MVC5.Basis\Basic\One

2.   ASP.NET Web API 结果:F:\WebAPI2.Basic\api\Basic\One

4)   Current.Request.PhysicalApplicationPath,获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。

string path = HttpContext.Current.Request.PhysicalApplicationPath;  //F:\WebForm.Basis\

其他项目同上。

5)   Request.Url.AbsoluteUri,获取绝对 URI。

string path = HttpContext.Current.Request.Url.AbsoluteUri;  //http://localhost:50049/RuntimePathTest

其他项目

1.   ASP.NET MVC 结果:http://localhost:23025/Basic/One

2.   ASP.NET Web API 结果:http://localhost:48987/api/Basic/One

8.   System.Web.Hosting.HostingEnvironment(程序集:System.Web.dll)

适用项目:Web 应用程序、ASP.NET MVC、ASP.NET Web API。

1)   ApplicationPhysicalPath,获取磁盘上指向应用程序目录的物理路径。

string path = HostingEnvironment.ApplicationPhysicalPath;   //F:\WebForm.Basis\

9.   System.Windows.Forms.Application(程序集:System.Windows.Forms.dll)

适用项目:窗体应用程序。

1)   StartupPath,获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

string path = Application.StartupPath;  //F:\WinForm.Basic\bin\Debug

2)   ExecutablePath:获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。

string path = Application.ExecutablePath;   //F:\WinForm.Basic\bin\Debug\WinForm.Basic.EXE

C# 获取程序运行时路径的更多相关文章

  1. Qt使用windows API获取程序运行时占用内存 good

    使用的是psapi.h中的GetProcessMemoryInfo函数,但是运行到该函数时就强制退出了. 后来,百度到原因是 原来Qt编译时加了-mthread,createprocess时要使的Ha ...

  2. golang获取程序运行路径

    golang获取程序运行路径: /* 获取程序运行路径 */ func getCurrentDirectory() string { dir, err := filepath.Abs(filepath ...

  3. 【转】Java Web 项目获取运行时路径 classpath

    Java Web 项目获取运行时路径 classpath 假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么ja ...

  4. Java Web 项目获取运行时路径 classpath

    假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么java文件夹和resources文件夹在运行时就是class ...

  5. c/c++编译时,指定程序运行时查找的动态链接库路径

    http://blog.csdn.net/tsxw24/article/details/10220735 c/c++编译时,指定程序运行时查找的动态链接库路径 分类: c/c++ linux 2013 ...

  6. .NET Core 获取程序运行环境信息与反射的应用

    目录 RuntimeInformation.Environment 获取信息 反射获取信息 获取某个属性的值以及别名 反射获取信息 使用 总结 笔者的九篇反射系统文章已经完结,但是笔者会持续更新反射在 ...

  7. 小程序运行时如何助力传统APP转型?

    小程序和H5或者RN有什么区别?优越性在哪里? 长期以来,移动互联网界一直在寻找一种既能获得Native原生的体验,又可以低门槛快速开发的技术.在这个过程中出现了很多尝试,例如React Native ...

  8. java程序运行时内存分配详解

    java程序运行时内存分配详解 这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下   一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个 ...

  9. Java程序运行时内存划分

    1.Java程序跨平台运行的原因 主要原因是:各种平台的JVM和字节码文件 Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在 ...

随机推荐

  1. PHP安装-phpMyAdmin+Discuz

    PHP安装-phpMyAdmin+Discuz基于Apache和MySQL安装完成之后继续安装PHP.以构建LAMP动态网站平台.http:./configure --prefix=/usr/loca ...

  2. 买卖股票的最佳时机II

    题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股 ...

  3. [WC2018]州区划分

    [WC2018]州区划分 注意审题: 1.有序选择 2.若干个州 3.贡献是州满意度的乘积 枚举最后一个州是哪一个,合法时候贡献sum[s]^p,否则贡献0 存在欧拉回路:每个点都是偶度数,且图连通( ...

  4. [luogu3294][背单词]

    题目链接 题意 读完题目就一个感受:这出题人tm不会说人话吗.真的感觉这个题理解题意比想出正解更难. 其实题目的意思就是,给出一些单词,给这些单词编个号,然后要求其他的单词中是这个单词后缀的词都在这个 ...

  5. mysql建立索引的几大原则

    (转)仅供自己学习,特此记录 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息 ...

  6. RedisDesktopManager如何使用命令行?

    RedisDesktopManager如何使用命令行? 解决方法: 1.右键某个redis链接,如果还没创建连接,请参考:http://yayihouse.com/yayishuwu/chapter/ ...

  7. linux less对文件内容进行搜索

    [ 可以先用 less 文件名 来打开文件, 然后可以按回车,打开底部命令输入行(即出现一个冒号的位置), 然后可以使用  键盘上的 home 键跳到文件开始,end键跳到最后,PgUp向前翻页,Pg ...

  8. 高级组件——表格JTable

    JTable(Object[][] rowData,Object[] columnNames)                         表格数据              列名集合 setSe ...

  9. Luogu P4011 孤岛营救问题

    题目链接 \(Click\) \(Here\) 注意坑点:一个地方可以有多把钥匙. 被卡了一会,调出来发现忘了取出来实际的数字,直接把二进制位或上去了\(TwT\),其他的就是套路的分层图最短路.不算 ...

  10. (转载) python3: beautifulsoup的使用

    转载: https://www.cnblogs.com/chimeiwangliang/p/8649003.htmlfrom bs4 import BeautifulSoup import reque ...