当前位置: 首页 > news >正文

C#获取当前路径的7种方法

C#获取当前路径的方法如下:

1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

-获取模块的完整路径。

2. System.Environment.CurrentDirectory

-获取和设置当前目录(该进程从中启动的目录)的完全限定目录。

3. System.IO.Directory.GetCurrentDirectory()

-获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\,有时不一定返回什么东东,我也搞不懂了。

4. System.AppDomain.CurrentDomain.BaseDirectory

-获取程序的基目录。

5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

-获取和设置包括该应用程序的目录的名称。

6. System.Windows.Forms.Application.StartupPath

-获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个"\"而已

7. System.Windows.Forms.Application.ExecutablePath

-获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。

对于Windows程序和Web 应用程序来说,他们运行的路径是不一样的,所以关键是判断当前运行的程序是哪种程序.于是我们可以使用如下的代码

string path = "";   if (System.Environment.CurrentDirectory == AppDomain.CurrentDomain.BaseDirectory)//Windows应用程序则相等   ...{   path = AppDomain.CurrentDomain.BaseDirectory;   }   else  ...{   path = AppDomain.CurrentDomain.BaseDirectory + "Bin\";   } 这样如果我们写了一个类库,类库中用到了Assembly.LoadFrom,由于是通用类库,所以可能用到Windows程序中也可能用到Web中,那么用上面的代码就很方便了.

1、Server.MapPath

2、System.Windows.Forms.StartupPath

3、Type.Assembly.Location

C#获取当前路径方法2可以应用于控制台应用程序,WinForm应用程序,Windows服务,方法1可以应用于Web应用程序,方法3都可以应用。

但方法3是加载应用程序的路径。如果是Web应用程序,取得的路径是:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。所以Web项目还是使用Server.MapPath吧。否则建议使用方法2。如果自己新建类库。可以加入对System.Windows.Forms.StartupPath的引用后使用。

转载于:https://www.cnblogs.com/lovelace821/archive/2011/09/21/2183338.html

相关文章:

  • android116 轮播 viewPager实现
  • 参加虚拟化达人训练营的体会
  • 转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法
  • django专题—安装、创建项目、添加应用
  • 自定义的asp.net翻页控件
  • python 数学运算符
  • 标题一定要长~~~~长~~~~~~~~~~~~~~长~~~~~~~~
  • python 中set模块的用法
  • Turbo C 2.0集成开发环境的使用
  • Ajax on Rails 2. The Eras of Web Development
  • 创建按钮的两种方法
  • JavaScript对象知识点总结
  • 在Python常用模块I如何打开相关文件的方法
  • 开发各种信息管理系统的标准演示数据都帮你整理好了,少了录入演示\测试\模拟数据的烦恼了[提供下载]...
  • Web2.0工具箱
  • .pyc 想到的一些问题
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【comparator, comparable】小总结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 345-反转字符串中的元音字母
  • express + mock 让前后台并行开发
  • express如何解决request entity too large问题
  • javascript 哈希表
  • javascript数组去重/查找/插入/删除
  • js 实现textarea输入字数提示
  • PAT A1092
  • PV统计优化设计
  • tab.js分享及浏览器兼容性问题汇总
  • Twitter赢在开放,三年创造奇迹
  • V4L2视频输入框架概述
  • 计算机常识 - 收藏集 - 掘金
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 区块链将重新定义世界
  • 实战|智能家居行业移动应用性能分析
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 无服务器化是企业 IT 架构的未来吗?
  • 怎么将电脑中的声音录制成WAV格式
  • 做一名精致的JavaScripter 01:JavaScript简介
  • AI算硅基生命吗,为什么?
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • #define
  • (2.2w字)前端单元测试之Jest详解篇
  • (C语言)二分查找 超详细
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)springboot教学评价 毕业设计 641310
  • (篇九)MySQL常用内置函数
  • (三)模仿学习-Action数据的模仿
  • (算法)求1到1亿间的质数或素数
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .net 使用ajax控件后如何调用前端脚本
  • .net 托管代码与非托管代码