Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
EvilBeaver opened this issue Oct 24, 2023 · 2 comments
Assignees
Labels

Comments

@EvilBeaver
Copy link
Owner

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

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

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

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

@EvilBeaver EvilBeaver added this to the v2.0-RC4 milestone Oct 24, 2023
@EvilBeaver EvilBeaver self-assigned this Oct 24, 2023
@EvilBeaver EvilBeaver removed this from the v2.0-RC4 milestone Jan 20, 2024
Repository owner deleted a comment from coderabbitai bot May 22, 2024
Repository owner deleted a comment from coderabbitai bot May 22, 2024
Repository owner deleted a comment from coderabbitai bot May 22, 2024
@Bayselonarrend
Copy link

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

Кстати, еще нашел вот такой момент
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

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

@EvilBeaver
Copy link
Owner Author

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

2 participants