@sorax1

Как собрать .NET Core проект под ubuntu в один файл?

На .NET Core реализовано консольное netcoreapp2.0 приложение под ubuntu и на той же ubuntu проект собирается.

Выполняется публикация командой
dotnet publish -c release -r ubuntu.16.04-x64

Проект собирается и готовый проект со всеми нужными библиотеками и прочими зависимостями лежит в папке publish, которую можно переносить на любой ubuntu сервер и там оно будет прекрасно работать, но хотелось бы тоскать не всю папку с кучей библиотек, а всего один исполняемый файл ну или хоть как-то сократить число файлов на выходе.

Возможно ли такой и если да то как такое реализовать, какие есть способы?
  • Вопрос задан
  • 714 просмотров
Пригласить эксперта
Ответы на вопрос 3
Есть что-то такое, но я бы сказал это несовсем то и пока оно в пре-альфа состоянии. В итоге получится один "жирный" испольнительный файл.

UPD. Есть еще такое, но походу тут будет еще больше костылей
Ответ написан
DarkRaven
@DarkRaven
разработка программного обеспечения
В теории, вы можете собрать deb-пакет, в котором будет ваше приложение.
Еще, можно вот тут глянуть - https://docs.snapcraft.io/build-snaps/your-first-snap
Ответ написан
@basrach
Это относится не только к Core под Ubuntu. К обычному .Net под Windows это тоже относится.
Решают эту проблему добавлением всех зависимостей исполняемого файла (например .exe) в ресурсы этого самого .exe. Затем при запуске приложения регистрируется обработчик события AppDomain.AssemblyResolve, который достаёт нужную сборку из ресурсов, загружает ее в домен и возвращает ссылку на нее среде. AppDomain.AssemblyResolve вызывается каждый раз когда приложению нужна какая-нибудь зависимость.
Это просто и несложно реализуется, при этом это не займет много времени.
Также есть и библиотеки, которые встраиваются в процесс билда и позволяют это дело автоматизировать. Выше уже был упомянут ILMerge, также есть Fody, возможно есть еще какие-то аналоги.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы