A .NET Core 3.1 használatával egy egyfájlos konzol alkalmazást adunk ki, amely Linux rendszeren fut, a programkód fő feladata nagyon egyszerű, vagyisOlvassa el a konfigurációs fájl kimenetét a programkönyvtárban! Viszont amikor egyetlen fájlt publikálsz Linuxon futtatni, azt mondja, hogy a fájl nem található.
Tesztkód:
A kimenet a következő:
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/
Amikor egy .NET Core alkalmazást egyetlen fájlként publikálnak, és futtatja azt egy CentOS rendszeren, a program önkibontja és kiadja/var/tmp/.net/root/a könyvtár menüjében, majd hívja meg a könyvtárban kiadott programot, ami magyarázatot ad arra is, hogy a program miért nem találja meg a konfigurációs fájlt.
megoldás
A System.Environment.CurrentDirectory segítségével a programút olvasható, a System.Environment.CurrentDirectory valóban megkapja az aktuális könyvtárat, de ha az A program B programot hívja, a B program pedig a System.Environment.CurrentDirectory segítségével kapja meg a könyvtárat. Ekkor a B programban megszerzett könyvtár már nem az a könyvtár, ahol a B alkalmazás található; Ez lesz az a könyvtár, ahol A található.
|