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

C#获取根目录实现方法汇总

以下是C#获取不同类型项目根目录的实现方法汇总,以及在 .NET Core 中获取项目根目录的方法:

  1. 控制台应用程序
string rootPath = Environment.CurrentDirectory;
string rootPath = AppDomain.CurrentDomain.BaseDirectory;
string rootPath = Path.GetFullPath("../../");
  1. WinForm应用程序
string rootPath = Application.StartupPath;
string rootPath = Directory.GetCurrentDirectory();
string rootPath = AppDomain.CurrentDomain.BaseDirectory;
  1. MVC和WebForm项目
string rootPath = Server.MapPath("/");
  1. Web API项目
string rootPath = System.Web.Hosting.HostingEnvironment.MapPath("/");
string rootPath = HttpRuntime.AppDomainAppPath;

在 .NET Core 中,可以使用以下方法获取项目的根目录:

  1. 使用 AppContext.BaseDirectory 属性

可以使用 AppContext.BaseDirectory 属性获取应用程序的根目录,例如:

string rootPath = AppContext.BaseDirectory;
  1. 使用 Directory.GetCurrentDirectory() 方法

可以使用 Directory.GetCurrentDirectory() 方法获取当前工作目录,例如:

string rootPath = Directory.GetCurrentDirectory();

需要注意的是,在某些情况下,当前工作目录可能不是应用程序的根目录。

  1. 使用 IWebHostEnvironment.ContentRootPath 属性(ASP.NET Core)

在 ASP.NET Core 应用程序中,可以使用 IWebHostEnvironment.ContentRootPath 属性获取应用程序的根目录,例如:

string rootPath = _hostEnvironment.ContentRootPath;

需要注意的是,要使用该方法,需要在应用程序中注入 IWebHostEnvironment 接口。

  1. 使用 AppContext.BaseDirectorySystem.Reflection.Assembly.GetEntryAssembly().Location 属性

可以使用 AppContext.BaseDirectorySystem.Reflection.Assembly.GetEntryAssembly().Location 属性获取应用程序的根目录,例如:

string rootPath = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

需要注意的是,System.Reflection.Assembly.GetEntryAssembly() 方法在某些情况下可能返回 null,因此该方法的可靠性可能不如其他方法。

需要注意的是,以上方法获取的是应用程序的根目录,而不是项目的根目录。在某些情况下,应用程序的根目录可能与项目的根目录不同。

http://www.lryc.cn/news/94379.html

相关文章:

  • vue获取当前坐标并通过天地图逆转码为省市区
  • 【MySQL】事务及其隔离性/隔离级别
  • 计算机由于找不到d3dx9_35.dll,无法启动软件游戏的三个修复方法
  • 第三章 模型篇:模型与模型的搭建
  • 深度学习一些简单概念的整理笔记
  • Vue3中引入Element-plus
  • 如何查看 Facebook 公共主页的广告数量上限?
  • U-Boot移植 (2)- LCD 驱动修改和网络驱动修改
  • Ubuntu 23.10 现在由Linux内核6.3提供支持
  • Python 学习之NumPy(一)
  • Nftables栈溢出漏洞(CVE-2022-1015)复现
  • 【C++】 Qt-事件(上)(事件、重写事件、事件分发)
  • k8s部署springboot
  • 备战秋招002(20230704)
  • 游泳买耳机买什么的比较好,列举几款实战性好的游泳耳机
  • 【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)
  • Java基础-多线程JUC-生产者和消费者
  • day2 QT按钮与容器
  • JPA 批量插入较大数据 解决性能慢问题
  • 为啥离不了 linux
  • 基于分形的置乱算法和基于混沌系统的置乱算法哪种更安全?
  • pve使用cloud-image创建ubuntu模板
  • shiro入门
  • 开源 sysgrok — 用于分析、理解和优化系统的人工智能助手
  • Gitlab保护分支与合并请求
  • ad18学习笔记九:输出文件
  • PostgreSQL 内存配置 与 MemoryContext 的生命周期
  • vue3 组件间通信的方式(setup语法糖写法)
  • 【Cache】Rsync远程同步
  • Gitlab升级报错一:rails_migration[gitlab-rails] (gitlab::database_migrations line 51)