Pull to refresh

Comments 18

Небольшое уточнение: не надо использовать PublishSingleFile, если только вам не требуется один файл любой ценой. Потому что в этом режиме приложение при запуске распаковывает необходимые нативные библиотеки во временную папку. Что сказывается, к примеру, на времени запуска.

Не приведет ли это к необходимости установки .net в систему?

Нет, режим --self-containedозначает распространение рантайма вместе с приложением

Они обещали, что в .net 7 или 8 этот режим будет работать получше, как минимум отсекать неиспользуемую часть рантайма.

Это же независимая фича, её можно будет включить (или выключить) отдельно. Надеюсь.

Может я путаю, но реализация с распаковкой файлов была в первой реализации SingleFile, в последующих версиях её допили до генерации нормального единого исполняемого файла даже в режиме self-contained в бинарник включен весь фреймворк (или его trim-версия для приложения) в виде уже машинного кода, без IL.

Нативные библиотеки не так-то просто включить в состав бинарника.

Ну они не всегда есть, и, на сколько помню, они просто рядом складывались к бинарнику, без включения, в таком случае.

Это в первых версиях. Но, когда пользователи начали жаловаться что SingleFile нифига не SingleFile, добавили распаковку во временную папку.

Видимо этих версий и комбинаций было столько что уже и не понятно, как оно работает.Я застал вариант где всё паковалось в файл и распаковывалось во временную папку при запуске - помню что пригорало от того что оно временную папку захламляет и путь до экзешника не тот где фактически запускаемый файл. Потом радовался версии, которая весь IL пакует в файл, а нативные либы рядом складывает - уже как бы не куча файлов и ничего не распаковывается. Про паковку нативных либ и их распаковку во временную папку я уже не в курсе

скиньте эту статью кто нибудь разработчикам terraria, а то их dedicated server до сих пор не вкурсе что его надо запускать в виде демона в НЕинтерактивном режиме..

И у майнкрафта та же проблема.


Я как-то делал костыль на Rust, чтобы запускать такие программы неинтерактивно, перенаправляя поток ввода в unix сокет.

сервер майнкрафта хотя бы работает в виде systemd службы без костылей, хотя и теряется возможность посылать ему команды. сервер террарии же просто валится, костыль для запуска его ввиде службы являет собой запуск внутри screen.

P.S.: за ваш костыль спасибо, посмотрю, хотя бы из чистого интерес

А можно ли на .NET и C# сделать службу не для systemd, а для OpenRC или runit? Или Microsoft поддерживает решение лишь для systemd? Просто из интереса.

А что мешает? Вся поддержка systemd сводится к работе с механизмами сокетов (LISTEN_FDS) и sd_notify (NOTIFY_SOCKET).


У OpenRC и runit разве есть подобные особые механизмы? Насколько я знаю, их нет. Следовательно, для них и особой поддержки никакой не требуется.

Sign up to leave a comment.