Изменения в поведении API, связанные со сборкой, для формата публикации с одним файлом
Изменилось поведение нескольких интерфейсов API, связанных с расположением файла сборки, когда они вызываются в формате публикации с одним файлом.
Описание изменения
В публикации с одним файлом для .NET 5 и более поздних версий упакованные сборки загружаются из памяти, а не извлекаются на диск. Для приложений, опубликованных в одном файле, это означает, что определенные интерфейсы API, связанные с расположением, возвращают в .NET 5 и более поздних версиях другие значения по сравнению с предыдущими версиями .NET. Изменения заключается в следующем.
API | предыдущих версий | .NET 5 и более поздней версии |
---|---|---|
Assembly.Location | Возвращает путь к извлеченному файлу DLL | Возвращает пустую строку для упакованных сборок |
Assembly.CodeBase | Возвращает путь к извлеченному файлу DLL | Вызывает исключение для упакованных сборок |
Assembly.GetFile(String) | Возвращает null для упакованных сборок |
Вызывает исключение для упакованных сборок |
Environment.GetCommandLineArgs()[0] |
Значением является имя точки входа библиотеки DLL | Значением является имя исполняемого файла узла |
AppContext.BaseDirectory | Значением является временный каталог извлечения | Значением является каталог, содержащий исполняемый файл узла |
Представленные версии
5,0
Рекомендуемое действие
Избегайте зависимостей от расположения файлов сборок при публикации в виде одного файла.