Re[3]: .NET 5 минимальное консольное приложение
От: _NN_ www.nemerleweb.com
Дата: 08.11.21 04:51
Оценка: 19 (2)
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, HotDog, Вы писали:


HD>>>Можно ли как то собрать просто один exe?

G>>https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file

HD>>>В настройках проекта ничего не нашел.

G>>Плохо искал

vaa>Если для серверного приложения это еще как-то подходит, то для настольного приложения это выглядит дико, конечно.

vaa>в смысле размера и реализации. Ведь тут по сути самораспаковывающийся архив. Даже знаю были проблемы в ранних версиях со стратовым каталогом(определялся как недра temp — куда шла распаковка).
vaa>вообщем странное решение. триминг тоже так себе. вероятно максимум это незагруженные библиотеки отделит.
vaa>Да и скорость запуска консольного приложения на моей машине. релизная сборка без упаковки (dll) запускается real ~ 100. В то время как rust и dmd(dlang со сборщиком мусора) оба real ~ 1.
vaa>Как ни крути dotnet это почти точная, чуть улучшеная в плане работы с памятью java.

Начиная с .NET 5 управляемые библиотеки загружаются из памяти.
А с .NET 6, ничего не распаковывается, всё из памяти.

https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file

Тримминг сегодня это не только убрать библиотеки, а ещё и модификация самих библиотек.
https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming/trimming-options
TrimMode = link

Это конечно ещё не сравнимо с тем, как выбрасывает код другие языки, но прогресс есть.
Если в .NET Core 3.1 минимальным размером было 40МБ, то в 5.0 уже 20МБ, а в 6.0 что-то около 13МБ.

Чтобы ускорить запуск следует собирать с Ready2Run: https://docs.microsoft.com/en-us/dotnet/core/deploying/ready-to-run
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: .NET 5 минимальное консольное приложение
От: Silver_S Ниоткуда  
Дата: 14.11.21 14:07
Оценка: 4 (1)
Здравствуйте, vaa, Вы писали:

vaa> Ведь тут по сути самораспаковывающийся архив. Даже знаю были проблемы в ранних версиях со стратовым каталогом(определялся как недра temp — куда шла распаковка).


Когда вышел .NET 5, они писали, что это сделать не просто, но работа в этом направлении продолжится.
В .NET 6, есть какие-то изменения:

#Net6 – Single file apps improved for Windows and Mac !

In .NET 6, single file apps have been enabled for Windows and macOS. In .NET 5, single files apps were limited to Linux. In .NET 6, for all supported operating systems, you can publish a single-file binary that has exactly one file on disk and does not need to extract any of the core runtime assemblies to temporary directories.


Single File Apps In .NET 6

In .NET 6, for the most part, this has been changed to a true single file experience where everything is loaded into memory, rather than extracted into temporary folders.

Отредактировано 14.11.2021 14:11 Silver_S . Предыдущая версия .
Re[4]: .NET 5 минимальное консольное приложение
От: vaa  
Дата: 14.11.21 14:13
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>

S_S>In .NET 6, for the most part, this has been changed to a true single file experience where everything is loaded into memory, rather than extracted into temporary folders.

Читал, только тут не понятно, это действительно одна сборка или просто архив со сборками, которые тупо загрузять в память и дальше будет использован стандартный механизм загрузки сборок из массива.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[5]: .NET 5 минимальное консольное приложение
От: Sharov Россия  
Дата: 15.11.21 00:10
Оценка:
Здравствуйте, vaa, Вы писали:

S_S>>

S_S>>In .NET 6, for the most part, this has been changed to a true single file experience where everything is loaded into memory, rather than extracted into temporary folders.

vaa>Читал, только тут не понятно, это действительно одна сборка или просто архив со сборками, которые тупо загрузять в память и дальше будет использован стандартный механизм загрузки сборок из массива.

Есть же вроде опиция Trim, при применении которой особой разницы не будет.
Кодом людям нужно помогать!
Re[6]: .NET 5 минимальное консольное приложение
От: Teolog  
Дата: 16.11.21 09:26
Оценка:
S>Есть же вроде опиция Trim, при применении которой особой разницы не будет.
Только она софт ломает, даже на минимальном уровне обрезки.
Re[7]: .NET 5 минимальное консольное приложение
От: Sharov Россия  
Дата: 16.11.21 09:53
Оценка:
Здравствуйте, Teolog, Вы писали:


S>>Есть же вроде опиция Trim, при применении которой особой разницы не будет.

T>Только она софт ломает, даже на минимальном уровне обрезки.

Вижу проблему с рефлексией. Если она не используется, то что должно сломаться, если речь
идет о выкидывании неиспользуемых ф-ий, т.е. кода?
Кодом людям нужно помогать!
Re[7]: .NET 5 минимальное консольное приложение
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.11.21 10:23
Оценка:
Здравствуйте, Teolog, Вы писали:


S>>Есть же вроде опиция Trim, при применении которой особой разницы не будет.

T>Только она софт ломает, даже на минимальном уровне обрезки.
Нужно ссылочки добавлять для рефлексии. Для .Net Native
https://docs.microsoft.com/en-us/windows/uwp/dotnet-native/reflection-and-net-native
https://docs.microsoft.com/en-us/windows/uwp/dotnet-native/runtime-directives-rd-xml-configuration-file-reference
https://stackoverflow.com/questions/57031822/reflection-and-activation-in-net-native
и солнце б утром не вставало, когда бы не было меня
Отредактировано 16.11.2021 10:44 Serginio1 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.