Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 50975|Відповідь: 0

[Джерело] .NET Core випускає проблему шляху до одного файлу

[Копіювати посилання]
Опубліковано 2021-3-28 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