[.NET, C#] Как уменьшить размер приложения на C#, которое независимо от среды?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В этой статье поделюсь опытом, как уменьшить размер приложения, написанное на C# и независящее от сборки, в 2 – 4 раза.Внимание: Сжатие содержимого программы доступно только для self-contained публикаций. А также все действия происходят в 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>
Затем нажмите ПКМ по проекту → Publish → Folder → Финиш → Show All Settings. Выставите следующие настройки:
- Deployment Mode: Self-Contained
- Target Runtime: win-x64 или свою версию. (Должна совпадать со строчкой RuntimeIdentifier)
Разверните File publish options и поставьте галочки под: Produce single file и Trim unused asseblies.Нажмите кнопку Publish. Всё то же самое, только командойОпасный режим:
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
Более подробно о том, что происходит за настройками вышеПервые 3 настройки имею говорящее название и должны совпадать с теми, что вы используете при публикации через Visual Studio. Команда PublishTrimmed активирует обрезку сборки. Команда TrimMode выбирает способ обрезки сборки. Здесь и происходит вся магия по сокращению размера итогового файла. Всего имеется 2 режима: CopyUsed (Assembly-level trimming) и Link (Member-Level Trimming).Assembly-level trimming — Просто удаляет неиспользуемые сборки. То есть алгоритм просто проходится по всем файлам программы, составляет список сборок, а затем удаляет из итоговой сборки все файлы, которые не используется. Этот метод мне помог сократить размер программы с 300 МБ до 96 МБ. При ZIP архивации этот файл стал 30МБ.Member-Level Trimming — Экспериментальный режим. Алгоритм анализирует ваш код и удаляет все ненужные классы, методы и т.д. Из-за того, что алгоритм влезает в код, существует большой риск, что приложение перестанет работать корректно, поэтому требует после публикации обширных тестов всех функций приложения. В моём случае, этот режим сократил размер программ с 300МБ до 86МБ, но при этом приложение перестало запускать и подавать какие-либо признаки жизни. Отладки тоже не поддалось, к сожалению.Более подробно можете почитать в этой статье
===========
Источник:
habr.com
===========
Похожие новости:
- [Высокая производительность, PostgreSQL, Программирование, .NET, SQL] Как реляционная СУБД делает JOIN?
- [.NET, C#] The '?.' Operator in foreach Will Not Protect From NullReferenceException
- [Программирование, Java, .NET] Как я выбирал между .NET и Java
- [Информационная безопасность, .NET, C#] OWASP, уязвимости и taint анализ в PVS-Studio C#. Смешать, но не взбалтывать
- [Информационная безопасность, .NET, C#] OWASP, Vulnerabilities, and Taint Analysis in PVS-Studio for C#. Stir, but Don't Shake
- [Программирование, Java, .NET, Карьера в IT-индустрии] Путь казахстанского разработчика: как я пришел к Java
- [Java, .NET, Разработка мобильных приложений, C#, Kotlin] C# vs Kotlin
- [Программирование, Искусственный интеллект, IT-компании] Microsoft разработала ИИ-систему, преобразующую простые текстовые запросы в код
- [.NET, C#] О классах Program и Startup — инициализация ASP.NET приложения. Часть I: Program и IHostBuilder
- [Habr, Программирование, Разработка игр, C#, Unity] Как обновить все сцены Unity-проекта в один клик
Теги для поиска: #_.net, #_c#, #_sokraschenie (Сокращение), #_razmer (Размер), #_programmy (Программы), #_c#, #_nezavisimaja_sreda (Независимая среда), #_sokraschenie_razmera (Сокращение размера), #_sokraschenie_razmera_programmy (Сокращение размера программы), #_.net, #_c#
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 07:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В этой статье поделюсь опытом, как уменьшить размер приложения, написанное на C# и независящее от сборки, в 2 – 4 раза.Внимание: Сжатие содержимого программы доступно только для self-contained публикаций. А также все действия происходят в 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>
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
=========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 07:16
Часовой пояс: UTC + 5