Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 50975|Risposta: 0

[Fonte] .NET Core rilascia un problema con un singolo percorso di file

[Copiato link]
Pubblicato il 28-03-2021 13:56:32 | | | |
Usando .NET Core 3.1 per rilasciare un'applicazione console a file singolo, che gira su un sistema Linux, la cosa principale che fa il codice del programma è molto semplice, cioèLeggi l'output del file di configurazione nella directory del programma! Tuttavia, quando pubblichi un singolo file per eseguirlo su Linux, dice che il file non è stato trovato.

Le nuove funzionalità di .NET Core rilasciano un eseguibile a singolo file
https://www.itsvse.com/thread-8273-1-1.html

Fai attenzione a System.Environment.CurrentDirectory per ottenere la directory corrente
https://www.itsvse.com/thread-9464-1-1.html
Codice di test:

L'output è il seguente:

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/


Quando si pubblica un'applicazione .NET Core come un singolo file, ed è eseguita su un sistema CentOS, il programma viene autoestratto e rilasciato/var/tmp/.net/root/e poi chiamare il programma rilasciato nella directory, il che può anche spiegare perché il programma non riesce a trovare il file di configurazione.

soluzione

Usando System.Environment.CurrentDirectory per leggere il percorso del programma, System.Environment.CurrentDirectory riceve effettivamente la directory corrente, ma se il programma A chiama il programma B e il programma B usa System.Environment.CurrentDirectory per ottenere la directory. Allora la directory ottenuta nel programma B non è più quella in cui si trova l'applicazione B; Diventa la directory dove si trova A.





Precedente:Errore Linux .NET Core: Non sono riuscito a trovare un pacchetto ICU valido installato...
Prossimo:Problemi di filigrana .NET Core nelle immagini Linux
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com