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