gpt4 book ai didi

c# - asp.net core获取项目根目录的方法Directory.GetCurrentDirectory() 在 Mac 上似乎无法正常工作

转载 作者:IT王子 更新时间:2023-10-29 04:02:57 25 4
gpt4 key购买 nike

我的项目有一个文件夹结构:

  • 项目,
  • 项目/数据
  • 项目/引擎
  • 项目/服务器
  • 项目/前端

在服务器中(在 Project/Server 文件夹中运行)我指的是这样的文件夹:

var rootFolder = Directory.GetCurrentDirectory();
rootFolder = rootFolder.Substring(0,
rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
PathToData = Path.GetFullPath(Path.Combine(rootFolder, "Data"));

var Parser = Parser();
var d = new FileStream(Path.Combine(PathToData, $"{dataFileName}.txt"), FileMode.Open);
var fs = new StreamReader(d, Encoding.UTF8);

在我的 Windows 机器上,这段代码工作正常,因为 Directory.GetCurrentDirectory() 被引用到当前文件夹,并且正在做

rootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length); 

获取项目的根文件夹(不是 bin 或 debug 文件夹)。但是当我在 Mac 上运行它时,它得到了“Directory.GetCurrentDirectory()”,将我发送到/usr//[其他]。它没有引用我的项目所在的文件夹。

在我的项目中查找相对路径的正确方法是什么?我应该在哪里存储数据文件夹,以便解决方案中的所有子项目都可以轻松访问它 - 特别是红隼服务器项目?我宁愿不必将它存储在 wwwroot 文件夹中,因为数据文件夹由团队中的不同成员维护,我只想访问最新版本。我有哪些选择?

最佳答案

取决于您在 kestrel 管道中的位置 - 如果您有权访问 IConfiguration(Startup.cs 构造函数)或 IWebHostEnvironment(以前的 IHostingEnvironment)您可以将 IWebHostEnvironment 注入(inject)您的构造函数或仅从配置中请求 key 。

Startup.cs构造函数中注入(inject)IWebHostEnvironment

public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
var contentRoot = env.ContentRootPath;
}

Using IConfiguration in Startup.cs Constructor

public Startup(IConfiguration configuration)
{
var contentRoot = configuration.GetValue<string>(WebHostDefaults.ContentRootKey);
}

关于c# - asp.net core获取项目根目录的方法Directory.GetCurrentDirectory() 在 Mac 上似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com