Как получить фактический путь к исполняемому файлу при использовании .netcore 3.0 и использовании флага / p: PublishSingleFile = true? - PullRequest
0 голосов
/ 24 сентября 2019

Я недавно обновил приложение до dotnet core 3 и начал использовать флаг PublishSingleFile во время процесса сборки.С этими двумя изменениями изменился способ определения пути к исполняемому файлу.Теперь вместо того, чтобы получить путь к исполняемому файлу, я перенаправляюсь в случайный каталог в /var/tmp/.net/, где я обычно получаю /opt/appdir/.

Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));

Редактировать: так что это похоже на случайныйdir, который он выплевывает, фактически указывает на распакованную версию моего приложения, которая не содержит жизненно важных ресурсов, которые находятся в другом каталоге.

1 Ответ

0 голосов
/ 27 сентября 2019

Вы получили фактический путь к исполняемому файлу.Вы просто не поняли, что происходит.Использование PublishSingleFile не генерирует ни одного файла, который при выполнении делает именно то, для чего запрограммировано программное обеспечение.На самом деле происходит то, что публикация с этим флагом генерирует файл, который содержит упакованную версию всех ваших файлов, которая при выполнении распаковывает их в подкаталог /var/tmp/.net и затем выполняет его.Поэтому, если вы перемещаете конфиги в каталог публикации после процесса публикации, они не будут автоматически помещаться в исполняемый каталог при развертывании и попытке его запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...