在 .NET 平台常见的获取当成程序主机路径的方法主要从
.NET 控制台程序,通过依赖注入获取 IHostEnvironment hostEnvironment
.NET Web程序,通过依赖注入获取 IWebHostEnvironment webHostEnvironment
hostEnvironment.ContentRootPath
webHostEnvironment.ContentRootPath
ContentRootPath 指的是应用程序内容文件的目录的绝对路径;
webHostEnvironment.WebRootPath
WebRootPath 指的是用于存放静态资源的那个 wwwroot 目录的绝对路径,ASP.NET Core MVC 项目的 css、 js、 img 等静态资源一般都是存放在 wwwroot 目录中,ASP.NET Core WebAPI 项目有需要也可以开启这个 wwwroot 的选项,只要在项目启动的时候 app.UseStaticFiles(); 启用静态文件模块即可。
由于Windows平台文件路径是用 \ 分隔的,但是Linux 和 Mac 平台无法识别 \ 分割凭借的文件路径,因为这两个平台是采用 / 做为文件路径分割符的,Windows 平台其实也是可以兼容 / 作为文件路径分割符号的。
在 .NET 6.0 及以前的版本中
webHostEnvironment.ContentRootPath;
webHostEnvironment.WebRootPath;
hostEnvironment.ContentRootPath;
三个变量的末尾都是带有一个分隔符的,但是.Net 7.0 中尾部的分割符号不见了,如果路径采用拼接的话就会出现问题,所以推荐拼接路径采用微软自带的方法 Path.Combine ,可以生成符合各个平台要求的路径。