C#学习教程:如何在asp.netcore中获取项目的根目录。Directory.GetCurrentDirectory()在mac上似乎无法正常工作Directory.GetCurrentDirectory()在Mac上似乎无法正常工作我的项目有一个文件夹结构:在服务器中我引用了一个这样的文件夹:varrootFolder=Directory.GetCurrentDirectory();rootFolder=rootFolder.Substring(0,rootFolder.IndexOf(@"Project",StringComparison.Ordinal)+@"Project".Length);PathToData=Path.GetFullPath(Path.Combine(rootFolder,"Data"));var解析器=解析器();vard=newFileStream(Path.Combine(PathToData,$"{dataFileName}.txt"),FileMode.Open);varfs=newStreamReader(d,Encoding.UTF8);在我的Windows机器上,这段代码工作正常,因为Directory.GetCurrentDirectory()指的是当前文件夹并且正在执行rootFolder.Substring(0,rootFolder.IndexOf(@"Project",StringComparison.Ordinal)+@"Project".Length);获取项目的根文件夹(不是bin或debug文件夹)。但是当我在Mac上运行它时,“Directory.GetCurrentDirectory()”将我发送到/usr//[other]。它不引用我的项目所在的文件夹。在我的项目中查找相对路径的正确方法是什么?我应该在哪里存储数据文件夹,以便解决方案中的所有子项目都可以轻松访问它——尤其是红隼服务器项目?我不想将它存储在wwwroot文件夹中,因为数据文件夹由团队的其他成员维护,我只想访问最新版本。我有哪些选择?如前所述(并收回)。要获取基本目录(如运行程序集的位置),请不要使用Directory.GetCurrentDirectory(),而是从IHostingEnvironment.ContentRootPath获取它。私有IHostingEnvironment_hostingEnvironment;私有字符串projectRootFolder;公共程序(IHostingEnvironmentenv){_hostingEnvironment=env;项目根文件夹=环境。长度);但是我犯了另一个错误:我在启动时将ContentRoot目录设置为Directory.GetCurrentDirectory(),从而破坏了我希望的默认目录!在这里,我评论了违规行:publicstaticvoidMain(string[]args){varhost=newWebHostBuilder().UseKestrel()//.UseContentRoot(Directory.GetCurrentDirectory())//现在它工作正常-我现在能够导航到我的项目根目录的子文件夹:varpathToData=Path.GetFullPath(Path.Combine(projectRootFolder,"data"));我通过阅读BaseDirectoryvs当前目录和@CodeNotFound的答案(由上述错误导致它不起作用)创建并意识到我的错误,基本上可以在这里找到:GetWebRootPathandContentRootPathinAsp.netCoreDependingonwhereyouare在Kestrel管道中-如果您有权访问IConfiguration(Startup.cs构造函数)或IHostingEnvironment您可以将IHostingEnvironment注入构造函数或仅从配置中请求密钥。在Startup.cs构造函数中注入IHostingEnvironment}在Startup.cs构造函数中使用IConfigurationpublicStartup(IConfigurationconfiguration){varcontentRoot=configuration.GetValue(WebHostDefaults.ContentRootKey);在某些情况下,_hostingEnvironment.ContentRootPath和System.IO.Directory.GetCurrentDirectory()目标指向源目录。这就是它的问题所在。那里提出的解决方案帮助了我Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);在此处尝试:获取应用程序文件夹路径的最佳方法从那里引用:System.IO.Directory.GetCurrentDirectory()返回当前目录,它可能是也可能不是应用程序所在的文件夹。Environment.CurrentDirectory也是如此。如果在DLL文件中使用它,它将返回进程运行的路径(这在ASP.NET中尤其如此)。以上就是C#学习教程:如何获取asp.netcore中项目的根目录。Directory.GetCurrentDirectory()在mac上好像不能正常工作所有内容分享,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文收藏来自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
