Як запустити консольну програму .NET Core з командного рядка


Відповіді:


274

Якщо це додаток, що залежить від рамки (за замовчуванням), ви запускаєте його dotnet yourapp.dll.

Якщо це автономна програма, ви запускаєте її за допомогою yourapp.exeWindows та ./yourappUnix.

Щоб отримати додаткові відомості про відмінності двох типів додатків, перегляньте статтю про розгортання додатка .NET в Документах .Net.


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. Вам доведеться розгорнути exe разом із будь-якими підтримуючими файлами config та dll.

Публікація консольних додатків


5
Так. Існує EXE - разом з 217 іншими файлами (api-ms-win-core-namedpipe-l1-1-0.dll тощо). Чи є в будь-якому випадку це зв'язати до одного EXE?
Елтон

1
Гарне запитання @Elton. Я не знаю. AFAIK, ви повинні розгорнути всі місця.
Джесс

2
Я думаю, що той факт, що він налаштований як автономний, вимагає, щоб усі ці DLL були там. Якщо ви не хочете їх там, режим розгортання, ймовірно, повинен бути Framework Dependent
kippermand

1
Ти зробив мою п'ятницю!
Робін Джонсон

20

Ви також можете запускати додаток, як і будь-які інші консольні програми, але лише після публікації.

Припустимо, у вас є проста програма консолі з назвою MyTestConsoleApp. Відкрийте консоль менеджера пакунків та запустіть таку команду:

dotnet publish -c Debug -r win10-x64 

-c прапор означає, що ви хочете використовувати конфігурацію налагодження (в іншому випадку ви повинні використовувати значення Release) - прапор r означає, що ваше додаток буде запущено на платформі Windows з архітектурою x64.

Коли процедура публікації буде завершена, ви побачите файл * .exe, що знаходиться у вашій біні / налагодженні / публікації.

Тепер ви можете викликати його за допомогою інструментів командного рядка. Тому відкрийте вікно 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.

Виконавчий файл, що містить Self, містить 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.


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

0

За допомогою CMD ви можете запустити консольний .net core project, якщо .net core SDK встановлений у вашій машині:

Щоб запустити проект консолі за допомогою командного рядка Windows, виберіть конкретний шлях у своєму каталозі та введіть наступну команду нижче

точка запуску


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.