Упаковка приложений в единый файл EXE для 2.0
Описание задачи
Поддержать функциональность make из версии 1.0 в версии 2.0
Дополнительная информация
Начиная с net6 опция PublishSingleFile создает действительно один файл и его можно использовать, как standalone runner упакованного приложения
А что для этого надо сделать?
Кстати, еще нашел вот такой момент 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
Не уверен, что это про то, просто сборка в ехехешники меня очень волнует))
Рассказываю:
- в дотнете 6.0 появилась возможность сделать однофайловую сборку. И она будет весить мегабайт 80. Даже хеллоуворлд
- можно сделать framework dependent, но тогда надо будет на целевую машину ставить дотнет правильной версии, а файл будет маленьким
- и в том и в другом случае, сборка будет некроссплатформенной (отдельно для линукса и винды), т.к. больше это выполняется не через mono, как было в OneScript 1.х
А что для этого надо сделать?
Написать сериализацию компилируемых модулей вместе со всеми библиотеками и дописывание его в конец файла к предподготовленному консольному раннеру (см. StandaloneRunner в ветке latest от версии 1.х)
Внутри раннера написать десериализацию всех модулей и загрузку их в правильном порядке в виртуальную машину.