C# 获取程序运行时路径

?  前言

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

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

?  适用项目:通用。

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

?  适用项目:通用。

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

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

3.   System.IO.Directory

?  适用项目:通用。

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

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

4.   System.Assembly

?  适用项目:通用。

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

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

5.   System.Diagnostics.Process

?  适用项目:通用。

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

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

6.   System.Web.HttpRuntime

?  适用项目: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

?  适用项目: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

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

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

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

9.   System.Windows.Forms.Application

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

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

时间: 2024-08-03 11:53:26

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

python日志功能实现-自动获取程序运行时信息

通过python的inspect模块,我们可以获取程序的运行时栈.一个python的运行时栈是一个六元组:(frame对象, 文件名, 当前行号, 函数名, 保存相关源代码行的列表, 当前行在源代码列表中的位置). 栈中第一个元素代表当前执行的位置信息,最后一个表示最外层的执行信息. 如: 1 import inspect 2 3 class Foo: 4 def __init__(self): 5 pass 6 def say(self): 7 print inspect.stack()[1]

获取java程序运行时内存信息

由于最近想自己动手测试一下String和StringBuffer的效率问题,需要获取程序运行时的内存占中信息,于是上网查了一下,根据查到的资料写了个程序,发现结果有问题,才发现查到的资料是错误的.所以在这里跟大家分享一下获取内存占用的正确方法 错误的方法 //程序开始时:(先调用一下垃圾回收,但是不一定立即执行) Runtime.getRuntime().gc(); long initm=Runtime.getRuntime().freeMemory(); //程序结束时: Runtime.ge

unicode string和ansi string的转换函数及获取程序运行路径的代码

#pragma once#include <string> namespace stds { class tool { public: std::string ws2s(const std::wstring& ws) { std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sou

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

http://blog.csdn.net/tsxw24/article/details/10220735 c/c++编译时,指定程序运行时查找的动态链接库路径 分类: c/c++ linux 2013-08-23 14:04 1117人阅读 评论(0) 收藏 举报 [plain] view plaincopy $ g++ -Wl,-rpath,/usr/local/lib/ -oevh libevent_http.cpp -levent -Wl,-rpath,  用于指定程序运行时查找动态链接库

WPF获取应用程序路径方法,获取程序运行路径方法

试了好多种方法,在WPF中获取工程的路径都没能解决掉,暂时用的绝对路径"D://WPF.....",但是发布的时候出现问题了,放到别的电脑上找不到路径,又开始了地毯式搜索,终于解决了,跟遇到此类问题的朋友分享下解决办法,如下: AppDomain.CurrentDomain.BaseDirectory +文件名即可,简单吧? //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称. string str5=Application.StartupPath; //可获得当前执行的

VC项目程序运行时设置指定目录读取Dll

方法一: 选择当前工程,右击"Properties" -> "Configuration Properties" -> "Debugging",在"Working Directory"设置dll的路径就可以了 方法二:设置项目的环境变量 方法三: CString strDllPath = GetExePath() + _T("System"); SetDllDirectory(strDllPat

程序运行时三种内存分配策略

按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未

程序运行时的内存分配情况

以下内容来自<C++编程实战宝典> 变量和函数占用的内存是系统在程序运行时为程序分配的,但并不是所有的变量和函数都被分配在同一块内存区域中.对于一个C++程序来说,系统一般采用3种方式为程序分配内存,下面将分别介绍这3种方式. (1)从静态存储区域分配 这部分内存在程序编译的时候就已经分配好,并且这块内存在程序的整个运行期间都存在.例如在函数外定义的全局变量,以及在创建时使用static修饰符的变量.在该区域存储的内容一般是全局变量,其中存储在数据段中的全局变量通常已经被初始化. (2)在栈上

Android程序运行时权限与文件系统权限的区别

apk程序是运行在虚拟机上的,对应的是Android独特的权限机制,只有体现到文件系统上时才使用linux的权限设置. (1)Android中的apk必须签名 (2)基于UserID的进程级别的安全机制  (3)默认apk生成的数据对外是不可见的  (4)AndroidManifest.xml中的显式权限声明  Android程序运行时权限与文件系统权限的区别