Como executar o aplicativo de console do .NET Core na linha de comando

Respostas:

273

Se for um aplicativo dependente da estrutura (o padrão), você o executará dotnet yourapp.dll.

Se é um aplicativo independente, você o executa usando yourapp.exeno Windows e ./yourappno Unix.

Para obter mais informações sobre as diferenças entre os dois tipos de aplicativos, consulte o artigo Implantação de aplicativos .NET Core no .Net Docs.

svick
fonte
22
É incrível quanto tempo demorei para descobrir isso. Estou tentando todos os tipos de comandos "dotnet run", etc. Este é o primeiro lugar que encontrei em muitas pesquisas que fornecem o uso correto do dotnet para executar um aplicativo de console. Por que a Microsoft tornou o .NET Core tão amigável para o desenvolvedor?
Glen Thomas
2
@GlenThomas Se você deseja executar um aplicativo que está desenvolvendo, use dotnet run. Além disso, onde você olhou? Onde você esperaria essa informação?
svick
1
"dotnet run" não parece mais ser o caso dos projetos principais do .NET que usam a instalação mais recente do MSBuild csproj, em vez dos arquivos project.json antigos.
Glen Thomas
1
@GlenThomas Isso não é verdade, dotnet runfunciona da mesma forma para os novos projetos csproj e para o project.json.
Svick
5
@GlenThomas, não tenho certeza se esse é o problema que você estava tendo, mas ao tentar usar dotnet run, verifique se você está no diretório do projeto, não no diretório da solução.
Ryan Lundy
46

Você pode facilmente criar um EXE (para Windows) sem usar nenhum comando de criação enigmático. Você pode fazer isso corretamente no Visual Studio.

  1. Clique com o botão direito do mouse no Console App Project e selecione Publicar .
  2. Uma nova página será aberta (captura de tela abaixo)
  3. Clique em Configurar ...
  4. Em seguida, altere o Modo de implantação para Autônomo ou dependente da estrutura . O .NET Core 3.0 apresenta uma implantação de arquivo único, que é um único executável.
  5. Use "dependente da estrutura" se você souber que a máquina de destino possui um tempo de execução do .NET Core, pois produzirá menos arquivos para instalar.
  6. Se agora você visualizar a pasta bin no explorer, encontrará o arquivo .exe.
  7. Você terá que implantar o exe junto com qualquer arquivo de configuração e DLL.

Publicação de aplicativo do console

Jess
fonte
5
Sim. Há o EXE - junto com outros 217 arquivos (api-ms-win-core-namedpipe-l1-1-0.dll, etc). Existe alguma maneira de agrupar isso em um único EXE?
Elton
1
Boa pergunta @Elton. Eu não sei. AFAIK você tem que implantar todas as DLLs.
Jess
2
Eu pensaria que o fato de estar configurado para ser independente exigiria que todas essas DLLs estivessem lá. Se você não quer que eles existem, o modo de implantação, provavelmente precisa ser Framework Dependente
kippermand
1
Você fez minha sexta-feira!
22619 Robin Robin Johnson
20

Você também pode executar seu aplicativo como qualquer outro aplicativo de console, mas somente após a publicação.

Vamos supor que você tenha o aplicativo de console simples chamado MyTestConsoleApp. Abra o console do gerenciador de pacotes e execute o seguinte comando:

dotnet publish -c Debug -r win10-x64 

-c flag significa que você deseja usar a configuração de depuração (em outro caso, você deve usar o valor Release) - r flag significa que seu aplicativo será executado na plataforma Windows com arquitetura x64.

Quando o procedimento de publicação terminar, você verá o arquivo * .exe localizado no diretório bin / Debug / publish.

Agora você pode chamá-lo via ferramentas de linha de comando. Então abra a janela do CMD (ou terminal), vá para o diretório em que seu arquivo * .exe está localizado e escreva o próximo comando:

>> MyTestConsoleApp.exe argument-list

Por exemplo:

>> MyTestConsoleApp.exe --input some_text -r true
Tequila
fonte
2

Com dotnetcore3.0, você pode empacotar toda a solução em um arquivo executável usando a PublishSingleFilepropriedade

-p:PublishSingleFile=True

Executáveis ​​de arquivo único de origem

Um exemplo Self Contained, ReleaseOSX executável:

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

Um exemplo Self Contained, DebugLinux 64bit executável:

dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True

A compilação do Linux é independente da distribuição e eu os encontrei trabalhando no Ubuntu 18.10, CentOS 7.7 e Amazon Linux 2.

Um executável autônomo inclui o Dotnet Runtime e o Runtime não precisa ser instalado em uma máquina de destino. Os executáveis ​​publicados são salvos em:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ no Linux, OSX e

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ no Windows.

TMT
fonte
Você também pode adicionar a configuração ao arquivo csproj:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi
0

Usando o CMD, você pode executar um projeto do núcleo .net do console se o SDK do .net core estiver instalado em sua máquina:

Para executar o projeto do console usando a linha de comando do Windows, escolha o caminho específico do seu diretório e digite o seguinte comando

dotnet run

Saurabh Nachankar
fonte
0

antes de executar no prompt do cmd, verifique se "appsettings.json" possui os mesmos valores que "appsettings.Development.json".

No prompt de comando, vá até a pasta bin / debug / netcoreapp2.0. em seguida, execute "dotnet applicationname.dll"

rahul
fonte