我有以下代码:
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核心的配置路径?
我觉得你对这里的事情感到困惑。默认情况下,从入口点目录中提取配置。在Visual Studio内部或从项目根目录中的命令行运行dotnet run
时,一切正常。此外,在发布时,发布的目录将包含配置文件以及入口点DLL,因此这也可以正常工作。
你似乎在谈论的是从bin
目录运行,这是一个不受支持的东西。 bin目录实际上是一个缓存。它不是您的应用程序的已发布版本,因此无法像它一样运行。