Z uporabo .NET Core 3.1 za izdajo konzolne aplikacije z eno datoteko, ki teče na Linux sistemu, je glavna naloga programske kode zelo preprosta, torejPreberi izhod konfiguracijske datoteke v programski mapi! Vendar pa, ko objaviš eno samo datoteko za zagon na Linuxu, piše, da datoteka ni najdena.
Testna koda:
Izhod je naslednji:
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/
Ko objavljate .NET Core aplikacijo kot eno datoteko in jo zaženete na sistemu CentOS, se program samodejno razširi in sprosti/var/tmp/.net/root/in nato pokliče program, ki je bil sproščen v mapi, kar lahko pojasni tudi, zakaj program ne najde konfiguracijske datoteke.
rešitev
Z uporabo System.Environment.CurrentDirectory za branje poti programa System.Environment.CurrentDirectory res dobi trenutni imenik, vendar če program A kliče program B, program B pa uporabi System.Environment.CurrentDirectory za pridobitev imenika. Takrat imenik, pridobljen v programu B, ni več imenik, kjer se nahaja aplikacija B; Postane imenik, kjer se nahaja A.
|