В этой статье я поделюсь своим опытом, как уменьшить размер ассемблерно-независимого приложения C# в 2–4 раза.
Внимание: Сжатие содержимого программы доступно только для самостоятельные публикации .
А также все действия происходят в Visual Studio Preview 2019.
Если вы здесь для быстрого решения, то вот что вам нужно сделать
В .csproject добавьте следующие строки: Опасный режим: удаляет неиспользуемые классы и методы.
Существует риск того, что приложение перестанет работать корректно, поэтому после публикации требуется тестирование всех функций приложения.
Более безопасный режим: удаляет только неиспользуемые сборки.<PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishTrimmed>true</PublishTrimmed> <TrimMode>Link</TrimMode>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishTrimmed>true</PublishTrimmed>
<TrimMode>CopyUsed</TrimMode>
Затем щелкните проект правой кнопкой мыши → Опубликовать → Папка → Готово → Показать все настройки.
Установите следующие настройки:
- Режим развертывания: автономный
- Т arget Время выполнения: win-x64 или ваша версия.
Нажмите кнопку Публиковать .
Все то же самое, только с командой
Опасный режим: dotnet publish -c Release -r win10-x64 -p:PublishTrimmed=True -p:TrimMode=Link -p:PublishSingleFile=true --self-contained true
Более безопасный режим:
dotnet publish -c Release -r win10-x64 -p:PublishTrimmed=True -p:TrimMode=CopyUsed -p:PublishSingleFile=true --self-contained true
Более подробная информация о том, что происходит за настройками выше
Первые три настройки имеют понятное название и должны совпадать с теми, которые вы используете при публикации через Визуальная Студия .Команда ПубликацияОбрезанный активирует обрезку сборки.
Команда Режим обрезки выбирает метод обрезки сборки.
Именно здесь происходит вся магия уменьшения размера конечного файла.
Всего есть 2 режима: КопироватьИспользовано (обрезка на уровне сборки) и Связь (Обрезка на уровне элемента).
Обрезка на уровне сборки: просто удаляются неиспользуемые сборки.
То есть алгоритм просто перебирает все файлы программы, составляет список сборок, а затем удаляет из финальной сборки все файлы, которые не используются.
Этот метод помог мне уменьшить размер программы с 300 МБ до 96 МБ.
При архивировании ZIP этот файл стал размером 30 МБ.
Обрезка на уровне элементов — экспериментальный режим.
Алгоритм анализирует ваш код и удаляет все ненужные классы, методы и т. д. Из-за того, что алгоритм попадает в код, высок риск того, что приложение перестанет работать корректно, поэтому после его завершения требуется тщательное тестирование всех функций приложения.
публикация.
В моем случае этот режим уменьшил размер программы с 300МБ до 86МБ, но приложение перестало запускаться и не подавало признаков жизни.
К сожалению, отладить тоже не удалось.
Подробнее о тестах вы можете прочитать в этой статье.
Официальная документация от Microsoft Теги: #программы #C++ #.
NET #уменьшение #Размер #Независимая среда #Уменьшение размера #Уменьшение размера программы
-
.Ru По Паспорту
19 Oct, 24 -
Вконтакте Раскрыл Свою Статистику
19 Oct, 24 -
Гибкий График Работы. Российский Опыт
19 Oct, 24