Estoy tratando de crear un binario .NET Core 6.0 como independiente, con todas las dependencias empaquetadas en un archivo .exe
.
El problema que tengo es que, aunque el binario se compila correctamente, depende de las DLL ubicadas en la carpeta Release/Debug.
He intentado compilar desde la línea de comandos con
dotnet publish --standalone
pero en ese caso, solo tengo un problema similar con una carga de más archivos DLL y el binario en sí tiene el mismo tamaño y debe estar en esa carpeta para ejecutarse.
¿Es posible lo que estoy buscando y, de ser así, cómo se puede lograr? Lo he intentado con Visual Studio, dotnet
cli y Rider hasta ahora.
Hay una serie de soluciones antiguas que mencionan soluciones como ilmerge
, pero esto parece haber quedado obsoleto hace mucho tiempo y ya no se mantiene.
-- EDITAR para el futuro yo:
La solución final se veía así, gracias a la respuesta de Andrew a continuación.
Mi archivo final project.csproj se veía así basado en MS Docs
<PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PublishSingleFile>true</PublishSingleFile> <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishReadyToRun>true</PublishReadyToRun> </PropertyGroup>
Publique a través de la GUI de Visual Studio o:
dotnet publish -c release -r win-x64
Sugeriría mirar https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file que, con suerte, debería estar actualizado. Creo que el bit clave es <PublishSingleFile>true</PublishSingleFile>
en .csproj.