Как запустить консольное приложение .NET Core из командной строки


215

У меня есть консольное приложение .NET Core, и я запустился dotnet publish. Однако я не могу понять, как запустить приложение из командной строки. Есть намеки?


Возможно, это может помочь: stackoverflow.com/questions/44074121/…
Бент Транберг

Ответы:


274

Если это приложение, зависящее от фреймворка (по умолчанию), вы запускаете его dotnet yourapp.dll.

Если это автономное приложение, вы запускаете его yourapp.exeв Windows и ./yourappUnix.

Для получения дополнительной информации о различиях между двумя типами приложений см. Статью .NET Core Application Deployment в .Net Docs.


22
Удивительно, как долго я это выяснил. Я пробую всевозможные команды «запуска по dotnet» и т. Д. Это первое место, в котором я сталкиваюсь при поиске, что дает правильное использование dotnet для запуска консольного приложения. Почему Microsoft сделала .NET Core такой дружественной к разработчикам?
Глен Томас

2
@GlenThomas Если вы хотите запустить разрабатываемое приложение, вы используете dotnet run. Кроме того, где вы смотрели? Где вы ожидаете эту информацию?
svick

1
«запуск по сети» больше не относится к основным проектам .NET, использующим более новую установку MSBuild csproj, а не старые файлы project.json.
Глен Томас

1
@GlenThomas Это не так, dotnet runработает для новых проектов csproj так же, как и для project.json.
svick

5
@GlenThomas, не уверен, что это ваша проблема, но когда вы пытаетесь ее использовать dotnet run, убедитесь, что вы находитесь в каталоге проекта, а не в каталоге решения.
Райан Ланди

46

Вы можете очень легко создать EXE (для Windows) без использования каких-либо загадочных команд сборки. Вы можете сделать это прямо в Visual Studio.

  1. Щелкните правой кнопкой мыши по проекту консольного приложения и выберите « Опубликовать» .
  2. Откроется новая страница (снимок экрана ниже)
  3. Нажмите Настроить ...
  4. Затем измените режим развертывания на автономный или зависимый от платформы . .NET Core 3.0 представляет развертывание с одним файлом, которое представляет собой один исполняемый файл.
  5. Используйте «зависящий от фреймворка», если вы знаете, что на целевой машине установлена ​​среда выполнения .NET Core, поскольку она будет производить меньше файлов для установки.
  6. Если вы теперь просматриваете папку bin в проводнике, вы найдете файл .exe.
  7. Вам нужно будет развернуть исполняемый файл вместе с любыми файлами конфигурации и DLL.

Консольное приложение Публикация


5
Ага. Там есть EXE - вместе с 217 другими файлами (api-ms-win-core-namedpipe-l1-1-0.dll и т. Д.). Есть ли способ связать это в один EXE-файл?
Элтон

1
Хороший вопрос @ Элтон. Я не знаю. AFAIK вы должны развернуть все библиотеки.
Джесс

2
Я думаю, что тот факт, что он настроен как автономный, потребует наличия всех этих библиотек DLL. Если они вам не нужны, режим развертывания, вероятно, должен быть зависимым от
платформы

1
Вы сделали мою пятницу!
Робин Джонсон

20

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

Предположим, у вас есть простое консольное приложение с именем 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

2

С помощью dotnetcore3.0 вы можете упаковать все решение в один исполняемый файл, используя PublishSingleFileсвойство

-p:PublishSingleFile=True

Исходные однофайловые исполняемые файлы

Пример Self Contained, ReleaseOSX исполняемого файла:

dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True

Пример Self Contained, DebugLinux 64bit исполняемым:

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\ на винде.


Вы также можете добавить конфигурацию в файл csproj:<PublishSingleFile>true</PublishSingleFile>
Махди

0

Используя CMD, вы можете запустить консольный проект .net core, если на вашем компьютере установлен .net core SDK:

Чтобы запустить консольный проект с помощью командной строки Windows, выберите конкретный путь из своего каталога и введите следующую команду

DotNet Run


0

прежде чем запускать в командной строке cmd, убедитесь, что у "appsettings.json" те же значения, что и у "appsettings.Development.json".

В командной строке перейдите к папке bin / debug / netcoreapp2.0. затем запустите "dotnet applicationname.dll"

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.