단일 파일 .Net Core 3.0 웹 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()
...
비슷하지만 별개의 질문 과 다른 스택 오버플로 질문 에서 솔루션을 시도했습니다 .
나는 다음을 전달하려고 시도했다. SetBasePath()
Directory.GetCurrentDirectory()
environment.ContentRootPath
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
각각 같은 오류가 발생했습니다.
문제의 근원은 PublishSingleFile
바이너리가 압축 해제되어 temp
디렉토리 에서 실행 된다는 것 입니다.
이 단일 파일 앱의 경우 찾고 appsettings.json
있던 위치 는 다음 디렉토리입니다.
C:\Users\USERNAME\AppData\Local\Temp\.net\APPNAME\kyl3yc02.5zs
위의 모든 방법은 파일이 압축 해제 된 위치를 가리키며, 이는 실행 위치와 다릅니다.