Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 50975|Antwoord: 0

[Bron] .NET Core lost een probleem met één bestandspad op

[Link kopiëren]
Geplaatst op 28-3-2021 13:56:32 | | | |
Het gebruik van .NET Core 3.1 om een single-file consoleapplicatie uit te brengen, draaiend op een Linux-systeem, is het belangrijkste wat de programmacode doet heel eenvoudig, namelijkLees de configuratiebestanden die in de programmamap worden uitgevoerd! Maar wanneer je één bestand publiceert om op Linux te draaien, zegt het dat het bestand niet gevonden is.

De nieuwe .NET Core-functies brengen een uitvoerbaar bestand uit met één bestand
https://www.itsvse.com/thread-8273-1-1.html

Wees voorzichtig met System.Environment.CurrentDirectory om de huidige map te krijgen
https://www.itsvse.com/thread-9464-1-1.html
Testcode:

De output is als volgt:

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/


Wanneer een .NET Core-applicatie als één bestand wordt gepubliceerd en uitgevoerd wordt op een CentOS-systeem, wordt het programma zelf uitgepakt en vrijgegeven/var/tmp/.net/root/en vervolgens het programma aanroepen dat in de map is vrijgegeven, wat ook kan verklaren waarom het programma het configuratiebestand niet kan vinden.

oplossing

Door System.Environment.CurrentDirectory te gebruiken om het programmapad te lezen, haalt System.Environment.CurrentDirectory inderdaad de huidige map op, maar als programma A programma B aanroept en programma B System.Environment.CurrentDirectory gebruikt om de map op te halen. Dan is de map die in het B-programma wordt verkregen niet langer de map waarin de B-applicatie zich bevindt; Het wordt de directory waar A zich bevindt.





Vorig:.NET Core Linux-fout: Geen geldig ICU-pakket kunnen vinden, geïnstalleerd...
Volgend:.NET Core-watermarkingproblemen op Linux-afbeeldingen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com