Здравствуйте, 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, ничего не распаковывается, всё из памяти.
Это конечно ещё не сравнимо с тем, как выбрасывает код другие языки, но прогресс есть.
Если в .NET Core 3.1 минимальным размером было 40МБ, то в 5.0 уже 20МБ, а в 6.0 что-то около 13МБ.
Здравствуйте, vaa, Вы писали:
vaa> Ведь тут по сути самораспаковывающийся архив. Даже знаю были проблемы в ранних версиях со стратовым каталогом(определялся как недра temp — куда шла распаковка).
Когда вышел .NET 5, они писали, что это сделать не просто, но работа в этом направлении продолжится.
В .NET 6, есть какие-то изменения:
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.
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.
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.
Читал, только тут не понятно, это действительно одна сборка или просто архив со сборками, которые тупо загрузять в память и дальше будет использован стандартный механизм загрузки сборок из массива.
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, при применении которой особой разницы не будет.