Naudojant .NET Core 3.1 išleisti vieno failo konsolės programą, veikiančią Linux sistemoje, pagrindinis dalykas, kurį programos kodas daro, yra labai paprastas, tai yraSkaitykite konfigūracijos failo išvestį programos kataloge! Tačiau kai paskelbiate vieną failą, skirtą paleisti "Linux", sakoma, kad failas nerastas.
Bandymo kodas:
Išvestis yra tokia:
AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Skelbiant ".NET Core" programą kaip vieną failą, paleidžiant ją "CentOS" sistemoje, programa savaime išskleidžiama ir išleidžiama/var/tmp/.net/root/katalogą, tada paskambinkite kataloge išleistai programai, kuri taip pat gali paaiškinti, kodėl programa negali rasti konfigūracijos failo.
sprendimas
Naudojant System.Environment.CurrentDirectory programos keliui nuskaityti, System.Environment.CurrentDirectory iš tikrųjų gauna dabartinį katalogą, bet jei programa A iškviečia programą B, o programa B naudoja System.Environment.CurrentDirectory, kad gautų katalogą. Tada B programoje gautas katalogas nebėra katalogas, kuriame yra B programa; Tai tampa katalogu, kuriame yra A.
|