Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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; Он становится справочником, где находится A.





Предыдущий:Ошибка .NET Core Linux: Не удалось найти установленный корректный пакет ICU...
Следующий:Проблемы с водяными знаками .NET Core на изображениях Linux
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com