У меня есть консольное приложение .NET Core и вы можете запустить dotnet publish
. Однако я не могу понять, как запустить приложение из командной строки. Любые подсказки?
Как запустить консольное приложение .NET Core из командной строки
Ответ 1
Если это приложение, зависящее от структуры (по умолчанию), вы запустите его dotnet yourapp.dll
.
Если это автономное приложение, вы запускаете его с помощью yourapp.exe
в Windows и ./yourapp
в Unix.
Дополнительные сведения о различиях между двумя типами приложений см. в статье .NET Core Application Deployment в .Net Docs.
Ответ 2
Вы можете очень легко создать EXE (для Windows) без использования каких-либо загадочных команд сборки. Вы можете сделать это прямо в Visual Studio.
- Щелкните правой кнопкой мыши по проекту консольного приложения и выберите Опубликовать.
- Откроется новая страница (снимок экрана ниже)
- Нажмите Настроить...
- Затем измените режим развертывания на автономный или зависимый от платформы
- Используйте "зависящий от фреймворка", если вы знаете, что на целевой машине установлена среда выполнения .NET Core, поскольку она будет производить меньше файлов для установки.
- Если вы теперь просматриваете папку bin в проводнике, вы найдете файл .exe.
- Вам придется развернуть исполняемый файл вместе с любыми файлами конфигурации и DLL.
Ответ 3
Вы также можете запустить свое приложение, как и любые другие консольные приложения, но только после публикации.
Предположим, у вас есть простое консольное приложение с именем MyTestConsoleApp. Откройте консоль диспетчера пакетов и выполните следующую команду:
dotnet publish -c Debug -r win10-x64
Флаг -c означает, что вы хотите использовать конфигурацию отладки (в другом случае вам следует использовать значение Release) - флаг r означает, что ваше приложение будет работать на платформе Windows с архитектурой x64.
Когда процедура публикации будет завершена, вы увидите файл *.exe, расположенный в каталоге bin/Debug/publish.
Теперь вы можете вызвать его с помощью инструментов командной строки. Поэтому откройте окно CMD (или терминал), перейдите в каталог, где находится ваш файл *.exe, и введите следующую команду:
>> MyTestConsoleApp.exe argument-list
Например:
>> MyTestConsoleApp.exe --input some_text -r true
Ответ 4
С помощью dotnetcore3.0 вы можете упаковать все решение в один исполняемый файл, используя свойство PublishSingleFile
-p:PublishSingleFile=True
Исходный код Однофайловые исполняемые файлы
Пример исполняемого файла OSX Self Contained
, Release
:
dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True
Пример Self Contained
, Debug
64-битного исполняемого файла Linux:
dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True
Сборка Linux не зависит от дистрибутива, и я считаю, что они работают на Ubuntu 18.10, CentOS 7.7 и Amazon Linux 2.
Автономный исполняемый файл включает Dotnet Runtime, и Runtime не требует установки на целевой машине. Опубликованные исполняемые файлы сохраняются в:
<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/
в Linux, OSX и
<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\
в Windows.