Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 50975|Répondre: 0

[Source] .NET Core génère un problème de chemin de fichier unique

[Copié le lien]
Publié le 28-03-2021 à 13:56:32 | | | |
En utilisant .NET Core 3.1 pour publier une application console à fichier unique, fonctionnant sur un système Linux, la principale chose du code du programme est très simple, c’est-à-direLisez la sortie du fichier de configuration dans le répertoire du programme! Cependant, lorsque vous publiez un seul fichier pour l’exécuter sous Linux, il est indiqué que le fichier n’est pas trouvé.

Les nouvelles fonctionnalités de .NET Core publient un exécutable à fichier unique
https://www.itsvse.com/thread-8273-1-1.html

Méfiez-vous de System.Environment.CurrentDirectory pour obtenir le répertoire actuel
https://www.itsvse.com/thread-9464-1-1.html
Code de test :

La sortie est la suivante :

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/


Lors de la publication d’une application .NET Core en fichier unique, en l’exécutant sur un système CentOS, le programme est auto-extrait et publié/var/tmp/.net/root/puis appeler le programme publié dans le répertoire, ce qui peut aussi expliquer pourquoi le programme ne trouve pas le fichier de configuration.

solution

En utilisant System.Environment.CurrentDirectory pour lire le chemin du programme, System.Environment.CurrentDirectory obtient effectivement le répertoire courant, mais si le programme A appelle le programme B et que le programme B utilise System.Environment.CurrentDirectory pour obtenir le répertoire. Alors, le répertoire obtenu dans le programme B n’est plus celui où se trouve l’application B ; Il devient le répertoire où se trouve A.





Précédent:Erreur Linux .NET Core : Impossible de trouver un package ICU valide installé...
Prochain:Problèmes de filigranage .NET Core sur les images Linux
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com