Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 50975|Odpowiedź: 0

[Źródło] .NET Core powoduje problem z pojedynczą ścieżką do pliku

[Skopiuj link]
Opublikowano 2021-3-28 13:56:32 | | | |
Używając .NET Core 3.1 do wydania konsolowej aplikacji z pojedynczym plikiem, działającej na systemie Linux, główny aspekt kodu programu jest bardzo prosty, czyliOdczytaj plik konfiguracyjny wyjściowy w katalogu programu! Jednak gdy publikujesz pojedynczy plik do uruchomienia na Linuksie, pojawia się komunikat, że plik nie został znaleziony.

Nowe funkcje .NET Core udostępniają plik wykonywalny w pojedynczym pliku
https://www.itsvse.com/thread-8273-1-1.html

Uważaj na System.Environment.CurrentDirectory, aby uzyskać aktualny katalog
https://www.itsvse.com/thread-9464-1-1.html
Kod testowy:

Wyniki są następujące:

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/


Podczas publikowania aplikacji .NET Core jako pojedynczego pliku, uruchamiając ją na systemie CentOS, program jest samorozpakowywany i wypuszczany/var/tmp/.net/root/a następnie wywołać program wydany w katalogu, co również tłumaczy, dlaczego program nie może znaleźć pliku konfiguracyjnego.

rozwiązanie

Korzystając z System.Environment.CurrentDirectory do odczytania ścieżki programu, System.Environment.CurrentDirectory rzeczywiście otrzymuje aktualny katalog, ale jeśli program A wywołuje program B, a program B używa System.Environment.CurrentDirectory do uzyskania katalogu. Wtedy katalog uzyskany w programie B nie jest już katalogiem, w którym znajduje się aplikacja B; Staje się on katalogiem, w którym znajduje się A.





Poprzedni:Błąd .NET Core Linux: Nie mogłem znaleźć zainstalowanego poprawnego pakietu ICU...
Następny:Problemy z znakowaniem wodnym .NET Core na obrazach Linuksa
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com