C# 获取程序运行时路径

摘要:
在前言开发中,经常需要获取程序运行时路径,如反射、文件操作等。C#中有许多类可以获取程序运行时间路径。我们不需要记住所有这些,只需要记住常见的,例如1.系统。AppDomain。CurrentDomain BaseDirectory,它获取程序集冲突解决程序用来探测程序集的基本目录。1) CurrentDirectory,它获取或设置当前工作目录的完全限定路径。1) AppDomainAppPath,它获取当前应用程序域中托管的应用程序的应用程序目录的物理驱动器路径。

Ø  前言

开发中,很多时候都需要获取程序运行时路径,比如:反射、文件操作等。.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:ConsoleApplicationinDebug

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

string path = System.Threading.Thread.GetDomain().BaseDirectory;    //F:ConsoleApplicationinDebug

 

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

string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//F:ConsoleApplicationinDebug

 

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

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

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

string path = Environment.CurrentDirectory;//F:ConsoleApplicationinDebug

 

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

string path = Environment.GetEnvironmentVariable("TEMP");   // C:UsersGOOAppDataLocalTemp

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

WINDIRC:WINDOWS

INCLUDEnull

TMP/TEMPC:UsersGOOAppDataLocalTemp

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

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

clip_image002[6]

 

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

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

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

string path = Directory.GetCurrentDirectory();  //F:ConsoleApplicationinDebug

 

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

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

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

string path = Assembly.GetExecutingAssembly().Location;//F:ConsoleApplicationinDebugConsoleApplication.exe

 

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

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

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

string path = Process.GetCurrentProcess().MainModule.FileName;  //F:ConsoleApplicationinDebugConsoleApplication.vshost.exe

 

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

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

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

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

 

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

string path = HttpRuntime.BinDirectory;//F:WebForm.Basisin

 

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

适用项目:Web 应用程序、ASP.NET MVCASP.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.BasisRuntimePathTest

其他项目

1.   ASP.NET MVC 结果:F:MVC5.BasisBasicOne

2.   ASP.NET Web API 结果:F:WebAPI2.BasicapiBasicOne

 

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 MVCASP.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.BasicinDebug

 

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

string path = Application.ExecutablePath;   //F:WinForm.BasicinDebugWinForm.Basic.EXE

免责声明:文章转载自《C# 获取程序运行时路径》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇高通开发笔记【美国大学生数学建模比赛】2020C题(总结和参赛论文)百度云请自取下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Golang的高级数据类型-字典(map)实战篇

          Golang的高级数据类型-字典(map)实战篇                              作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。       Go语言字典和数组,切片一样,是来保存一组相同的数据类型的。可以通过key键来获取value值,map为映射关系容器,采用散列(hash)实现。   如...

Slf4j MDC机制

转自:  https://www.liangzl.com/get-article-detail-572.html MDC 简介 MDC ( Mapped Diagnostic Contexts ),它是一个线程安全的存放诊断日志的容器。 Logback设计的一个目标之一是对分布式应用系统的审计和调试。在现在的分布式系统中,需要同时处理很多的请求。如何来很好...

分享10个必备的简化Web设计的HTML5工具

这个文章是适合真正想去做HTML5应用的设计人员和开发人员阅读。这里我将不再重复HTML5开发的重要性。因为大家都已经知道这点。这里我收集了10个HTML5的工具帮助你在不同的方面简化你的开发和设计。如果你也喜欢这个文章,请在我们的网站GBin1留言支持! 1. FindmebyIP 一个列出了所有浏览器对于HTML5支持细节的网站。特别适合对于浏览器的兼...

springCloud 后端使用webSocket向前端推送消息

1、webSocket webSocket长连接是一种在单个tcp连接上进行全双工通信的协议,允许双向数据推送。一般微服务提供的restful API只是对前端请求做出相应。使用webSocket可以实现后端主动向前端推送消息。 2、springboot使用webSocket 1、pom文件添加依赖 <dependency> <...

SpringMVC基础知识

SpringMVC SpringMVC简介: SpringMVC是一个表示层框架,搭建真实环境 SpringMVC的使用方法:注解和配置。(注解为主) SpringMVC是Spring3.x的一个模块,其实就是用MVC提供的表示层框架。 SpringMVC对视图组件没有必然要求,不一定要使用jsp,struts1,struts2规定了只能用jsp。 Spr...

java多线程案例

packagecom.alibaba.yuntu.me.biz.district.service.impl.MyUtis; importcom.alibaba.fastjson.JSONObject; importcom.alibaba.yuntu.me.common.base.util.HttpUtil; importlombok.SneakyThro...