如何配置单文件.Net Core 3.0 Web API应用程序以查找appsettings.json
与创建单文件应用程序相同的目录中的文件?
跑步后
dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true
该目录如下所示:
XX/XX/XXXX XX:XX PM <DIR> .
XX/XX/XXXX XX:XX PM <DIR> ..
XX/XX/XXXX XX:XX PM 134 appsettings.json
XX/XX/XXXX XX:XX PM 92,899,983 APPNAME.exe
XX/XX/XXXX XX:XX PM 541 web.config
3 File(s) 92,900,658 bytes
但是,尝试运行会APPNAME.exe
导致以下错误
An exception occurred, System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\Users\USERNAME\AppData\Local\Temp\.net\APPNAME\kyl3yc02.5zs\appsettings.json'.
at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
...
我尝试了类似但截然不同的问题以及其他Stack Overflow问题的解决方案。
我试图将以下内容传递给 SetBasePath()
Directory.GetCurrentDirectory()
environment.ContentRootPath
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
每个导致相同的错误。
问题的根源在于PublishSingleFile
二进制文件已解压缩并从temp
目录运行。
对于此单个文件应用程序,其查找的位置appsettings.json
是以下目录:
C:\Users\USERNAME\AppData\Local\Temp\.net\APPNAME\kyl3yc02.5zs
上述所有方法均指向文件解压缩的位置,该位置与运行文件的位置不同。