Publicación de una aplicación de .NET MAUI sin empaquetar para Windows con la CLI
Al distribuir tu aplicación de .NET Multi-platform App UI (.NET MAUI) para Windows, puedes publicar la aplicación y sus dependencias en una carpeta para la implementación en otro sistema.
Configuración de las opciones de compilación del proyecto
Agrega el siguiente nodo <PropertyGroup>
al archivo del proyecto. Este grupo de propiedades solo se procesa cuando la plataforma de destino es Windows y la configuración se establece en Release
. Esta sección de configuración se ejecuta cada vez que compilas o publicas en el modo Release
.
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
<RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>
En <PropertyGroup>
el ejemplo se requiere para solucionar un error en el SDK de aplicaciones para Windows. Para obtener más información sobre el error, consulta Incidencia de WindowsAppSDK n.º 3337.
Publicar
Para publicar la aplicación, abre el terminal Símbolo del sistema para desarrolladores para VS 2022 y ve a la carpeta del proyecto de aplicación .NET MAUI. Ejecuta el comando dotnet publish
con los parámetros siguientes:
Parámetro | Valor |
---|---|
-f |
El marco de destino, que es net8.0-windows{version} . Este valor es un TFM de Windows, como net8.0-windows10.0.19041.0 . Asegúrate de que este valor sea idéntico al valor del nodo <TargetFrameworks> de tu archivo .csproj. |
-c |
La configuración de compilación, que es Release . |
-p:RuntimeIdentifierOverride=win10-x64 - o - -p:RuntimeIdentifierOverride=win10-x86 |
Evita el error detallado en la incidencia n.° 3337 de WindowsAppSDK. Elige la versión -x64 o -x86 del parámetro en función de la plataforma de destino. |
-p:WindowsPackageType |
El tipo de paquete, que es None para aplicaciones sin empaquetar. |
-p:WindowsAppSDKSelfContained |
El modo de implementación de tu aplicación, que puede depender del marco o ser independiente. Este valor debe ser true para aplicaciones independientes. Para obtener más información sobre las aplicaciones dependientes del marco y las aplicaciones independientes, consulta Información general de la implementación de SDK de aplicaciones para Windows. |
Advertencia
El intento de publicar una solución de .NET MAUI tendrá como resultado que el comando dotnet publish
intente publicar cada proyecto de la solución de forma individual, lo que puede causar problemas cuando hayas agregado otros tipos de proyecto a tu solución. Por lo tanto, el comando dotnet publish
debe tener como ámbito el proyecto de aplicación .NET. MAUI.
Por ejemplo:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None
Nota:
En .NET 8, el comando dotnet publish
tiene como valor predeterminado la configuración Release
. Por lo tanto, la configuración de compilación se puede omitir desde la línea de comandos.
La publicación compila la aplicación, copiando el ejecutable en la carpeta bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish. En esta carpeta, hay un archivo exe y esa es la aplicación compilada. Esta aplicación se puede iniciar o toda la carpeta se puede copiar en otra máquina e iniciarla allí.
Una distinción importante de una aplicación empaquetada es que esto no incluirá el tiempo de ejecución de .NET en la carpeta. Esto significa que la aplicación requerirá que el entorno de ejecución de .NET se instale primero en las máquinas que finalmente ejecutarán la aplicación. Para garantizar que la aplicación también contiene todos los componentes de tiempo de ejecución, se puede proporcionar el argumento -p:WindowsAppSDKSelfContained
en la publicación. Por ejemplo:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true
Para más información sobre el comando dotnet publish
, lee dotnet publish.