如何在.net核心解决方案中转到另一个项目的根文件夹?

时间:2019-10-09 05:45:16

标签: asp.net-core-3.0

我需要从解决方案中的另一个项目中读取设置文件(appsettings.json)。当我使用时:

Directory.GetCurrentDirectory()

在当前项目中,我得到以下路径:

  

{projectRootFolder} \ bin \ Debug \ netcoreapp3.0 \

我的问题是如何在相同的解决方案中访问另一个项目中的相同文件夹?还是有更好的方法从当前项目中的另一个项目访问设置文件?

2 个答案:

答案 0 :(得分:0)

如果我对问题的理解正确,那么会有两个误解:

  1. 访问另一个项目的输出目录几乎没有意义,因为该结构仅在编译时有意义。一旦应用程序“发布”,您在运行时的结构就不会相同。

  2. Directory.GetCurrentDirectory()返回当前工作目录。由Visual Studio设置为项目输出目录只是一个巧合。它可以是完全不同的目录。

我不清楚您到底想达到什么目标。我建议使用.net核心提供的配置系统来访问配置,并将其他appsettings.json添加为另一个configuration provider

如果您确实需要打开设置文件,则带有设置文件(A)的项目应将文件标记为“复制到输出目录”,而打开文件(B)的项目应引用项目A。设置文件也将被复制到项目A的输出中。

答案 1 :(得分:0)

您无法执行的操作。 ASP.NET Core没有固有的方式来知道在完全不同的进程中运行的完全不同的应用程序位于何处。

如果需要从另一个项目访问appsettings.json,则需要将其作为链接文件包含在项目中,并将其设置为复制到输出。然后,您实际上是从项目中访问它(这是您可以所做的一切),但是文件本身是共享的。

但是,这几乎总是一个坏主意,通常表明您做错了事。如果您确实确实需要共享设置,那么您应该要做的就是将它们放入分布式配置提供程序(如Azure Key Vault或类似程序)中,这两个项目都可以从一个公用存储中独立访问设置