C# 各种路径获取方式分析与举例

假设 D盘 有这么一个叫 Foo 应用程序,调用了 F盘 中的一个程序集。现在从命令行中运行 C:\Users\stg609 > D:\foo.exe (如下图所示)。


使用下面各种获取路径的方式,猜猜看每条语句返回的值是什么?


获取工作目录

Environment.CurrentDirectory 

Directory.GetCurrentDirectory() 


工作目录不一定是程序的路径,可能在程序运行期间会改变。


获取应用程序域目录

AppDomain.CurrentDomain.BaseDirectory (推荐,适用于各种类型应用程序)

HttpRuntime.AppDomainAppPath //只试用于 web 应用程序


承载当前应用程序的应用程序域所在的路径。


获取应用程序路径

//除桌面应用程序之外,其它类型应用程序都需要先添加对 System.Windows.Forms 的引用。

System.Windows.Forms.Application.Application.StartupPath

System.Windows.Forms.Application.Application.ExecutablePath (除了目录外还包含应用程序名称)


Request.ApplicationPath //只试用于 web 应用程序,如果当前应用程序就是网站根目录,则该值为 “/”。

获取程序集所在路径

//获取应用程序入口所在程序集的位置,如果托管程序集是从非托管应用程序中加载的,那么Assembly.GetEntryAssembly() 将返回 null,例如 asp.net 应用程序。

System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 


System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location //获取当前正在执行的程序集所在的位置,如果一个程序集通过反射等方式执行,那路径就会不同。


WEB 应用程序示例

直接通过一个实例运行后的效果看一下,上述语句的输出是什么:

答 案

是时候揭露文章刚开头的问题答案了。







文章索引

[隐 藏]

本站采用知识共享署名 3.0 中国大陆许可协议进行许可。 ©2014 Charley Box | 关于本站 | 浙ICP备13014059号