Как найти «файлы содержимого» в контексте publishsinglefile .exe (с неизвестной временной папкой)

#.net #publish

Вопрос:

РЕДАКТИРОВАТЬ На самом деле я был неправ, я получил ложную диагностику моей проблемы.

В .Net Core 3 действительно была ошибка с публикацией AppContext.BaseDirectory одного файла. Но теперь это исправлено в .Net 5.

Я видел это при включении примитивной системы регистрации, когда мой WPF закрывается для отладки опубликованного приложения.

Ошибка, которую я допустил, заключалась в использовании pack URI для доступа к моим файлам содержимого.

Этот URI пакета всегда работает как относительный путь от выполнения, то есть из временной извлеченной папки в случае публикации одного файла, что приводит к невозможности поиска файла содержимого, хранящегося в AppContext.BaseDirectory .

Поэтому мне пришлось удалить использование pack URI (добавление pack://application:,,, к относительному пути) и вместо этого использовать абсолютный путь ( Path.Combine(AppContext.BaseDirectory,@MyContentFile) ).

Для записи здесь был мой вопрос :

У меня запущено приложение WPF. У меня есть как исходные файлы, так и файлы содержимого (некоторые конфигурируемые и изменяемые из файлов пользовательских значков).

Когда я публикую его (через dotnet publish ), он работает. Но когда я публикую его как один файл (через -p:PublishSingleFile=true параметр), то, как я понимаю, полученное приложение автоматически извлекается в «случайную» временную папку. Таким образом, использование my ранее Path.Combine(AppContext.BaseDirectory,@MyContentFile) не работает, поскольку AppContext.BaseDirectory теперь указывает на эту временную, неизвестную мне папку.

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

Спасибо.