Kasutades .NET Core 3.1 versiooni ühe failiga konsoolirakenduse väljaandmiseks, mis töötab Linuxi süsteemis, on programmikoodi peamine tegevus väga lihtne – see tähendabLoe konfiguratsioonifaili väljundit programmi kataloogist! Kuid kui avaldad ühe faili Linuxi jaoks, ütleb see, et faili ei leita.
Testkood:
Väljund on järgmine:
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/
Kui .NET Core rakendus avaldatakse ühe failina, käivitades selle CentOS süsteemis, siis programm ise lahti võetakse ja vabastatakse/var/tmp/.net/root/kataloogi ja seejärel kutsuda kataloogis vabastatud programmi, mis võib samuti selgitada, miks programm ei leia konfiguratsioonifaili.
lahus
Kasutades System.Environment.CurrentDirectory programmi tee lugemiseks, saab System.Environment.CurrentDirectory tõepoolest praeguse kataloogi, kuid kui programm A kutsub programmi B ja programm B kasutab kataloogi saamiseks System.Environment.CurrentDirectory. Siis ei ole B programmis saadud kataloog enam see kataloog, kus B rakendus asub; Sellest saab kataloog, kus A asub.
|