Как собрать исполняемые файлы для определенных c платформ в. Net? - PullRequest
0 голосов
/ 07 мая 2020

Мой вопрос в том, что написано в названии. Я хочу встроить свое приложение C# в исполняемые файлы для Windows, Linux и MacOS, чтобы я мог разместить их в выпуске в моем репозитории github. Как я могу это сделать? Может быть, пригодится make-файл или что-то в этом роде, чтобы создать все сразу?

1 Ответ

1 голос
/ 08 мая 2020

Если вы используете. 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
...