ASPNET Core如何解析配置路径

时间:2019-03-25 06:56:06

标签: asp.net-core configuration

我有以下代码:

 var config = new ConfigurationBuilder();

    config
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddEnvironmentVariables()
        .AddJsonFile("appsettings.json")
        .AddJsonFile($"appsettings.{environment}.json", true);

在开发环境和生产中也能很好地工作。但是,如果我放置这个:

    Raise<FileNotFoundException>.If(File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json")),
        $"Could not find the settings file");

它在调试会话和发布会话(通常是未从Visual Studio发布和执行应用程序)期间引发异常,找不到该文件,这是正确的,因为VS2017不会将设置文件复制到调试文件夹,而是将它们保留在源文件夹中。所以我的问题是 dotnet核心如何解析aspnet核心的配置路径?

1 个答案:

答案 0 :(得分:0)

我认为您对这里的事情感到困惑。默认情况下,该配置是从入口点目录中提取的。在Visual Studio中,或者在项目根目录中从命令行运行dotnet run时,一切正常。另外,当您发布时,发布的目录将包含配置文件以及入口点DLL,因此也可以正常工作。

您似乎在说的是从bin目录运行的,这不受支持。 bin目录实际上是一个缓存。它不是您的应用程序的已发布版本,因此无法像原来那样运行。