Если вы используете. NET Core 3.x или новее, вы можете использовать dotnet publish
с различными параметрами для создания автономных исполняемых файлов :
dotnet publish -c Release -r linux-x64 -p:PublishSingleFile=true
Вы потребуется повторно запустить эту команду для каждой платформы (Windows, macOS, Linux), на которую вы хотите настроить таргетинг:
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true
dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=true
-p:PublishSingleFile=true
создает один исполняемый файл, который вы можете скопировать и запустить. Вы можете прикрепить его как артефакт к выпуску на GitHub.
(Кроме того: этот исполняемый файл автоматически распакуется в несколько десятков файлов, а затем запустит эту версию. Это означает, что вы не сможете его запустить, например, в системе без диска, на который вы можете писать.)
И да, вы определенно можете обернуть это в Makefile
или что-то в этом роде. Вот пример инструмента cli, над которым я работаю:
publish:
dotnet publish \
-c $(CONFIGURATION) \
-r $(RUNTIME) \
-p:PublishSingleFile=true