Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 50975|Răspunde: 0

[Sursă] .NET Core lansează o problemă cu calea unui singur fișier

[Copiază linkul]
Postat la 28-03-2021 13:56:32 | | | |
Folosind .NET Core 3.1 pentru a lansa o aplicație de consolă cu un singur fișier, rulând pe un sistem Linux, principalul lucru pe care îl face codul programului este foarte simplu, adicăCitește fișierul de configurare ieșit în directorul programului! Totuși, când publici un singur fișier care să ruleze pe Linux, spune că fișierul nu este găsit.

Noile funcții .NET Core lansează un executabil cu un singur fișier
https://www.itsvse.com/thread-8273-1-1.html

Fii atent la System.Environment.CurrentDirectory pentru a obține directorul curent
https://www.itsvse.com/thread-9464-1-1.html
Cod de test:

Rezultatul este următorul:

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/


Când se publică o aplicație .NET Core ca un singur fișier, rulând-o pe un sistem CentOS, programul este autoextras și lansat/var/tmp/.net/root/și apoi să apeleze programul lansat în director, ceea ce poate explica și de ce programul nu poate găsi fișierul de configurare.

soluție

Folosind System.Environment.CurrentDirectory pentru a citi calea programului, System.Environment.CurrentDirectory primește într-adevăr directorul curent, dar dacă programul A apelează programul B, iar programul B folosește System.Environment.CurrentDirectory pentru a obține directorul. Atunci directorul obținut în programul B nu mai este directorul în care se află aplicația B; Devine directorul unde se află A.





Precedent:Eroare Linux .NET Core: Nu am găsit niciun pachet ICU valid instalat...
Următor:Probleme cu watermarking-ul .NET Core pe imaginile Linux
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com