#.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
теперь указывает на эту временную, неизвестную мне папку.Спасибо.