Вообще-то появились не только скриншоты, но и сам iso образ с именем 21996.1.210529-1541.co_release_CLIENT_CONSUMER_x64FRE_en-us.iso доступный для свободного скачивания если знать откуда.
Странно. У меня на .NET 6 SDK Preview 4 получаются такие результаты с пустым WinForms проектом:
SingleFile+Trim+Link=87.9MB
SingleFile+Trim+Copy=87.9MB
SingleFile+Trim+Link+Compress=41.1MB
SingleFile+Trim+Copy+Compress=41.1MB
SingleFile=134MB
SingleFile+Compress=61MB
(размеры указаны без учета нативных библиотек, лежащих рядом с исполняемым файлом)
Похоже что опция Link не работает, т.к. на размер она никак не влияет...
Оказывается TrimMode=Link на .NET 6 используется по умолчанию, и при попытке поменять его на CopyUsed никакой разницы не наблюдается.
Я имел в виду что если запустить его под отладчиком, то по идее должно показать где проблема. Так же обычно в этих случаях создается запись в событиях винды (Event Viewer) с текстом исключения. В большинстве случаев проблема вызвана удалением какого-то нужного типа и решается добавлением специальных тегов в файл проекта.
Вообще-то IncludeAllContentForSelfExtract и IncludeNativeLibrariesForSelfExtract не одно и тоже… Совершенно разные опции…
Ну и во многих случаях важнее иметь единый файл, чем потерять 10 МБ места на диске из-за распакованных файлов. Например у консольных приложений вообще нет никаких нативных зависимостей (если их самому не добавить), они из коробки имеются только у WinForms и WPF.
Распаковываться будут только нативные зависимости, коих обычно не больше 10, а не все потроха, причем только при первом запуске. При последующих запусках будут использоваться распакованные библиотеки. Не вижу в этом проблемы.
С опцией PublishSingleFile, помимо непосредственно .exe файла размером 135 МБ, я получаю ещё дополнительный набор файлов.
Так используйте опцию -p:IncludeNativeLibrariesForSelfExtract=true и нативные зависимости тоже упакуются в единый файл. По умолчанию они располагаются рядом с исполняемым файлом.
-p:EnableCompressionInSingleFile=true включает zlib сжатие сборок в single file, опция доступна только при использовании .NET 6 SDK Preview 4 и выше. Размер файла уменьшится дополнительно еще примерно в 2 раза. --self-contained true при публикации с -p:PublishSingleFile=true используется по умолчанию. -p:IncludeNativeLibrariesForSelfExtract=true позволяет включить в единый файл нативные зависимости, чтобы они после публикации не лежали рядом с исполняемым файлом. Опция точно доступна в .NET 5.0 SDK, а может и более ранних.
Походу взялись за облачные VPN, потому что Lantern отвалился тоже 20 числа... Совпадение? Не думаю...
В приложении Магнит Доставка всё еще разлогинивает.
Вообще-то появились не только скриншоты, но и сам iso образ с именем 21996.1.210529-1541.co_release_CLIENT_CONSUMER_x64FRE_en-us.iso доступный для свободного скачивания если знать откуда.
.NET 5.0 это не просто переименованный 3.1, там огромное количество изменений...
А библиотеки оно никуда не распаковывает. Сборки грузятся напрямую из памяти используя CreateFileMapping/MapViewOfFile peimagelayout.cpp.
Странно. У меня на .NET 6 SDK Preview 4 получаются такие результаты с пустым WinForms проектом:
SingleFile+Trim+Link=87.9MB
SingleFile+Trim+Copy=87.9MB
SingleFile+Trim+Link+Compress=41.1MB
SingleFile+Trim+Copy+Compress=41.1MB
SingleFile=134MB
SingleFile+Compress=61MB
(размеры указаны без учета нативных библиотек, лежащих рядом с исполняемым файлом)
Похоже что опция Link не работает, т.к. на размер она никак не влияет...Оказывается TrimMode=Link на .NET 6 используется по умолчанию, и при попытке поменять его на CopyUsed никакой разницы не наблюдается.
Я имел в виду что если запустить его под отладчиком, то по идее должно показать где проблема. Так же обычно в этих случаях создается запись в событиях винды (Event Viewer) с текстом исключения. В большинстве случаев проблема вызвана удалением какого-то нужного типа и решается добавлением специальных тегов в файл проекта.
Вообще-то
IncludeAllContentForSelfExtract
иIncludeNativeLibrariesForSelfExtract
не одно и тоже… Совершенно разные опции…Ну и во многих случаях важнее иметь единый файл, чем потерять 10 МБ места на диске из-за распакованных файлов. Например у консольных приложений вообще нет никаких нативных зависимостей (если их самому не добавить), они из коробки имеются только у WinForms и WPF.
Распаковываться будут только нативные зависимости, коих обычно не больше 10, а не все потроха, причем только при первом запуске. При последующих запусках будут использоваться распакованные библиотеки. Не вижу в этом проблемы.
Вот тут про сжатие упоминается https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4/
Кстати, а что за проблемы с отладкой были при использовании PublishTrimmed и TrimMode=Link?
Например тут https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file или тут https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/design.md.
Про сжатие вряд ли где-то написано, т.к. эта фича появилась недавно https://github.com/dotnet/runtime/pull/50817
https://github.com/dotnet/sdk/pull/16838
Так используйте опцию
-p:IncludeNativeLibrariesForSelfExtract=true
и нативные зависимости тоже упакуются в единый файл. По умолчанию они располагаются рядом с исполняемым файлом.-p:EnableCompressionInSingleFile=true
включает zlib сжатие сборок в single file, опция доступна только при использовании .NET 6 SDK Preview 4 и выше. Размер файла уменьшится дополнительно еще примерно в 2 раза.--self-contained true
при публикации с-p:PublishSingleFile=true
используется по умолчанию.-p:IncludeNativeLibrariesForSelfExtract=true
позволяет включить в единый файл нативные зависимости, чтобы они после публикации не лежали рядом с исполняемым файлом. Опция точно доступна в .NET 5.0 SDK, а может и более ранних.