Para um projeto de aplicativo de console direcionado ao .NET Core 1.0, não consigo descobrir como obter um arquivo .exe durante a compilação. O projeto corre bem na depuração.
Eu tentei publicar o projeto, mas isso também não funciona. Faz sentido, pois um arquivo EXE seria específico da plataforma, mas deve haver uma maneira. Minhas pesquisas apenas encontraram referências às versões mais antigas do .NET Core que usavam project.json.
Sempre que eu construo ou publico, é tudo o que recebo:
dotnet <path>.dll
(eu não estava pensando e digitandodotnet run <path>.dll
sem sucesso por razões óbvias)! (Na reflexão que seria bom se isso foi fechado em favor da outra questão que tem um conjunto semelhante de respostas)Respostas:
Para fins de depuração, você pode usar o arquivo DLL. Você pode executá-lo usando
dotnet ConsoleApp2.dll
. Se você deseja gerar um arquivo EXE, é necessário gerar um aplicativo independente.Para gerar um aplicativo independente (EXE no Windows), você deve especificar o tempo de execução de destino (específico do sistema operacional que você segmenta).
Apenas antes do .NET Core 2.0 : primeiro, adicione o identificador de tempo de execução dos tempos de execução de destino no arquivo .csproj ( lista de RIDs suportados ):
A etapa acima não é mais necessária a partir do .NET Core 2.0 .
Em seguida, defina o tempo de execução desejado ao publicar seu aplicativo:
fonte
RuntimeIdentifier
no csproj.ATUALIZAÇÃO (31-OUT-2019)
Para quem quiser fazer isso por meio de uma GUI e:
Nota
Observe o tamanho do arquivo grande para um aplicativo tão pequeno
Você pode adicionar a propriedade "PublishTrimmed". O aplicativo incluirá apenas componentes usados pelo aplicativo. Cuidado : não faça isso se estiver usando reflexão
Publicar novamente
Postagem anterior
Para quem está usando o Visual Studio e deseja fazer isso via GUI, consulte as etapas abaixo:
fonte
O seguinte produzirá, no diretório de saída,
Mas ele não contém todos os assemblies de tempo de execução do .NET Core.
Eu o envolvi em uma amostra aqui: https://github.com/SimonCropp/NetCoreConsole
fonte
Se um arquivo .bat for aceitável, você poderá criar um arquivo bat com o mesmo nome que o arquivo DLL (e colocá-lo na mesma pasta) e colar no seguinte conteúdo:
Obviamente, isso pressupõe que a máquina tenha o .NET Core instalado e disponível globalmente.
(Esta resposta é derivada do comentário de Chet .)
fonte
Aqui está minha solução hacky - gere um aplicativo de console (.NET Framework) que leia seu próprio nome e argumentos e depois chame
dotnet [nameOfExe].dll [args]
.Obviamente, isso pressupõe que o .NET esteja instalado na máquina de destino.
Aqui está o código. Sinta-se livre para copiar!
fonte
dotnet [nameOfExe].dll %*