Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 50975|Отговор: 0

[Източник] .NET Core пуска проблем с пътя на един файл

[Копирай линк]
Публикувано на 28.03.2021 13:56:32 | | | |
Използвайки .NET Core 3.1 за пускане на еднофайлово конзолно приложение, работещо на Linux система, основното, което програмният код прави, е много простоПрочетете изхода на конфигурационния файл в директорията на програмата! Въпреки това, когато публикувате един файл за Linux, той показва, че файлът не е намерен.

Новите функции на .NET Core пускат еднофайлов изпълним файл
https://www.itsvse.com/thread-8273-1-1.html

Бъдете внимателни с System.Environment.CurrentDirectory, за да получите текущата директория
https://www.itsvse.com/thread-9464-1-1.html
Тестов код:

Изходът е следният:

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/


Когато се публикува .NET Core приложение като един файл, изпълняващ го на CentOS система, програмата се саморазархивира и пуска/var/tmp/.net/root/директория и след това извикай програмата, пусната в директорията, което също може да обясни защо програмата не може да намери конфигурационния файл.

решение

Използвайки System.Environment.CurrentDirectory за четене на пътя на програмата, System.Environment.CurrentDirectory наистина получава текущата директория, но ако програма A извика програма B, а програма B използва System.Environment.CurrentDirectory, за да получи директорията. Тогава директорията, получена в B програмата, вече не е директорията, в която се намира B приложението; Той става директорията, в която се намира А.





Предишен:.NET Core Linux грешка: Не можах да намеря валиден инсталиран ICU пакет...
Следващ:Проблеми с водния знак на .NET Core при Linux снимки
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com