Para un proyecto de aplicación de consola dirigido a .NET Core 1.0, no puedo entender cómo obtener un .exe para generar durante la compilación. El proyecto funciona bien en depuración.
He intentado publicar el proyecto, pero eso tampoco funciona. Tiene sentido ya que un archivo EXE sería específico de la plataforma, pero debe haber una manera. Mis búsquedas solo han hecho referencia a versiones anteriores de .NET Core que usaban project.json.
Cada vez que construyo o publico, esto es todo lo que obtengo:
dotnet <path>.dll
(no estaba pensando y escribiendodotnet run <path>.dll
sin éxito por razones obvias)! (Reflexionando, sería bueno si esto se cerrara a favor de la otra pregunta que tiene un conjunto similar de respuestas)Respuestas:
Para fines de depuración, puede usar el archivo DLL. Puedes ejecutarlo usando
dotnet ConsoleApp2.dll
. Si desea generar un archivo EXE, debe generar una aplicación autónoma.Para generar una aplicación autónoma (EXE en Windows), debe especificar el tiempo de ejecución de destino (que es específico del sistema operativo al que se dirige).
Solo antes de .NET Core 2.0 : primero, agregue el identificador de tiempo de ejecución de los tiempos de ejecución de destino en el archivo .csproj ( lista de RID compatibles ):
El paso anterior ya no es necesario a partir de .NET Core 2.0 .
Luego, configure el tiempo de ejecución deseado cuando publique su aplicación:
fuente
RuntimeIdentifier
en csproj.ACTUALIZACIÓN (31-OCT-2019)
Para cualquiera que quiera hacer esto a través de una GUI y:
Nota
Observe el tamaño de archivo grande para una aplicación tan pequeña
Puede agregar la propiedad "PublishTrimmed". La aplicación solo incluirá componentes utilizados por la aplicación. Precaución : no hagas esto si estás usando la reflexión
Publicar de nuevo
Publicación anterior
Para cualquiera que use Visual Studio y quiera hacer esto a través de la GUI, consulte los pasos a continuación:
fuente
Lo siguiente producirá, en el directorio de salida,
Pero no contiene todos los ensamblados de tiempo de ejecución de .NET Core.
Lo envolví en una muestra aquí: https://github.com/SimonCropp/NetCoreConsole
fuente
Si un archivo .bat es aceptable, puede crear un archivo bat con el mismo nombre que el archivo DLL (y colocarlo en la misma carpeta), luego pegue el siguiente contenido:
Obviamente, esto supone que la máquina tiene .NET Core instalado y disponible a nivel mundial.
(Esta respuesta se deriva del comentario de Chet ).
fuente
Aquí está mi solución alternativa: generar una aplicación de consola (.NET Framework) que lea su propio nombre y argumentos, y luego llame
dotnet [nameOfExe].dll [args]
.Por supuesto, esto supone que .NET está instalado en la máquina de destino.
Aquí está el código. ¡Siéntase libre de copiar!
fuente
dotnet [nameOfExe].dll %*