OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Упаковка приложений в единый файл EXE для 2.0

Open EvilBeaver opened this issue 2 years ago • 2 comments

Описание задачи

Поддержать функциональность make из версии 1.0 в версии 2.0

Дополнительная информация

Начиная с net6 опция PublishSingleFile создает действительно один файл и его можно использовать, как standalone runner упакованного приложения

EvilBeaver avatar Oct 24 '23 09:10 EvilBeaver

А что для этого надо сделать?

Кстати, еще нашел вот такой момент https://stackoverflow.com/questions/70421680/c-sharp-net-6-0-exe-only

Если вкратце, то там спрашивающий нашел, как сделать одним файлом, но в этот файл запаковалось столько всего, что тот стал весить 180 мб. А в ответах предложили

change deployment mode in the deployment settings from self contained to framework dependent

Не уверен, что это про то, просто сборка в ехехешники меня очень волнует))

Bayselonarrend avatar Oct 10 '24 12:10 Bayselonarrend

Рассказываю:

  • в дотнете 6.0 появилась возможность сделать однофайловую сборку. И она будет весить мегабайт 80. Даже хеллоуворлд
  • можно сделать framework dependent, но тогда надо будет на целевую машину ставить дотнет правильной версии, а файл будет маленьким
  • и в том и в другом случае, сборка будет некроссплатформенной (отдельно для линукса и винды), т.к. больше это выполняется не через mono, как было в OneScript 1.х

А что для этого надо сделать?

Написать сериализацию компилируемых модулей вместе со всеми библиотеками и дописывание его в конец файла к предподготовленному консольному раннеру (см. StandaloneRunner в ветке latest от версии 1.х)

Внутри раннера написать десериализацию всех модулей и загрузку их в правильном порядке в виртуальную машину.

EvilBeaver avatar Oct 19 '24 17:10 EvilBeaver