run publicar net deploy asp application .net-core visual-studio-2017

.net core - publicar - VS2017 compila NetCoreApp como EXE



publicar net core en iis (5)

A partir de .NET Core 2.2, puede construir ejecutables dependientes del marco

Aunque construir una implementación autónoma puede ser una buena solución, tiene sus propios inconvenientes. (Véanse las respuestas de R. Titov y Martin Ullrichs en SCD-s.)

Afortunadamente .NET Core 2.2 admite la construcción de los llamados ejecutables dependientes de Framework , que son esencialmente un contenedor binario ( .exe en Windows) alrededor de los dll-s estándar .

De esta manera , tiene todas las ventajas (y desventajas) de la implementación estándar dependiente del marco (nuevamente, vea la respuesta de Martin), pero tiene una manera conveniente de iniciarla , sin tener que llamarla a través de la CLI de dotnet .

Puede publicar su aplicación como un ejecutable dependiente del marco utilizando la siguiente sintaxis:

dotnet publish -c Release -r <RID> --self-contained false

Donde RID es el identificador de tiempo de ejecución habitual, por ejemplo, win-x64 o cualquier plataforma para la que desee construir ( consulte el catálogo aquí ).

Creé una NetCoreApp (v1.1) en Visual Studio 2017. Cuando lo compilo, obtengo una DLL producida en lugar del EXE esperado para el proyecto construido. Verifiqué el archivo csproj y confirme que el tipo de salida está configurado como exe , pero no dice.

¿Alguna idea de por qué VS2017 sigue produciendo una DLL? Estoy seguro de que es una configuración rápida en algún lugar que olvidé ... también es la 1 AM. :)

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <PropertyGroup Condition="''$(Configuration)|$(Platform)''==''Debug|AnyCPU''"> <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <ItemGroup> <ProjectReference Include="../Core.EF.SqlServer/Core.EF.SqlServer.csproj" /> </ItemGroup> </Project>


Así es como se hace una publicación independiente con línea de comandos en cualquier sistema operativo: dotnet Publique C: / src / App / App.csproj -c release -r win-x64 -o output-win-x64

Además, es posible que desee reducir la salida de ~ 60 MB típicos para una aplicación Hello World simple a ~ 30 Mb utilizando ILLink .

Además, es posible que desee ir más allá y obtener un único archivo .exe de un tamaño de alrededor de 5Mb y usar ILCompiler . Ver esta respuesta .


Las otras respuestas son buenas, pero lo que a veces encuentro conveniente es:

  • No es autónomo porque es probable que la máquina de destino tenga instalado el núcleo .net de la versión correcta. Esto reduce el número de dlls que necesito enviar.
  • No tiene que especificar dotnet en la línea de comando

Para esto, se puede usar un contenedor de archivos bat similar a estas líneas:

@ECHO OFF REM see http://joshua.poehls.me/powershell-batch-file-wrapper/ SET SCRIPTNAME=%~d0%~p0%~n0.dll SET ARGS=%* dotnet "%SCRIPTNAME%" %ARGS% EXIT /B %ERRORLEVEL%

Si su aplicación termina en yourapp.dll nombre el archivo bat yourapp.bat y colóquelo junto al archivo dll. Ahora, en lugar de los dotnet yourapp.dll params de dotnet yourapp.dll params , puede llamar a los yourapp params

Tenga en cuenta que el contexto de esta respuesta es herramientas internas, por lo que todos los desarrolladores que utilicen la utilidad tendrán una configuración de máquina de desarrollo bastante estándar. Si esto se va a distribuir a un cliente externo que ejecuta quién sabe qué en sus cajas, la opción autónoma es muy superior.


Se supone que las aplicaciones .NET Core son archivos .dll . OutputType establecido en Exe en este caso significa "ejecutable" y hace todo lo necesario para garantizar que la salida sea ejecutable (punto de entrada del método Main() , archivo .runtimeconfig.json ). El archivo dll resultante se debe ejecutar con:

dotnet yourapp.dll

Este archivo dll funciona en todas las plataformas compatibles con .net core runtime (windows, linux, macOS). Esto se denomina implementación "portátil" o "dependiente del marco".

Si realmente desea un archivo .exe , considere implementaciones independientes. Esto creará una salida que contiene su propia copia del .net core runtime y un archivo yourapp.exe , pero también aumenta el tamaño de la aplicación publicada y necesita actualizarse cuando se lanzan nuevas versiones del runtime. Además, la aplicación resultante solo funciona en el sistema operativo publicado para.

Consulte la implementación de la aplicación .NET Core para obtener más detalles sobre las opciones de implementación y cómo configurarlas.


en VS2017

  1. Haga clic derecho en su proyecto y seleccione Publicar (en VS2019 haga clic en Construir -> Publicar)
  2. Seleccione ''Carpeta'' y cree un nuevo perfil
  3. En la pestaña ''Publicar'', haga clic en ''Configurar ...''
  4. Seleccione el modo de implementación: autónomo, tiempo de ejecución de destino: win-x86 (o win-x64)
  5. Salvar
  6. Publicar

en la carpeta / bin / Debug / netcoreapp2.1 / win-x86 / verá el archivo EXE