Publicar um aplicativo .NET MAUI não empacotado para Windows com a CLI
Ao distribuir seu aplicativo de interface do usuário de aplicativo de várias plataformas do .NET (.NET MAUI) para Windows, você pode publicar o aplicativo e suas dependências em uma pasta para implantação em outro sistema.
Definir as configurações de build do projeto
Adicione o nó <PropertyGroup>
a seguir ao arquivo de projeto. Esse grupo de propriedades só é processado quando a estrutura de destino é o Windows e a configuração é definida como Release
. Esta seção de configuração é executada sempre que um build ou publica no modo Release
.
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
<RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>
O <PropertyGroup>
no exemplo é necessário para contornar um bug no SDK do Aplicativo Windows. Para obter mais informações sobre o bug, consulte Problema nº 3337 do WindowsAppSDK.
Publicar
Para publicar seu aplicativo, abra o Prompt de Comando do Desenvolvedor para o terminal do VS 2022 e navegue até a pasta do projeto de aplicativo .NET MAUI. Execute o comando dotnet publish
, fornecendo os seguintes parâmetros:
Parâmetro | Valor |
---|---|
-f |
A estrutura de destino, que é net8.0-windows{version} . Esse valor é um TFM do Windows, como net8.0-windows10.0.19041.0 . Verifique se esse valor é idêntico ao valor no nó <TargetFrameworks> no arquivo .csproj. |
-c |
A configuração do build, que é Release . |
-p:RuntimeIdentifierOverride=win10-x64 - ou - -p:RuntimeIdentifierOverride=win10-x86 |
Evita o bug detalhado em problema nº 3337 do WindowsAppSDK. Escolha a versão -x64 ou -x86 do parâmetro com base na plataforma de destino. |
-p:WindowsPackageType |
O tipo de pacote, que é None para aplicativos não empacotados. |
-p:WindowsAppSDKSelfContained |
O modo de implantação do seu aplicativo, que pode ser dependente da estrutura ou autocontidos. Esse valor deve ser true para aplicativos autocontidos. Para obter mais informações sobre aplicativos dependentes de estrutura e aplicativos autocontidos, consulte Visão geral da implantação do SDK do Aplicativo Windows. |
Aviso
A tentativa de publicar uma solução MAUI do .NET resultará na tentativa do comando dotnet publish
de publicar cada projeto na solução individualmente, o que pode causar problemas quando você adicionou outros tipos de projeto à sua solução. Portanto, o comando dotnet publish
deve ser definido como escopo para seu projeto de aplicativo MAUI do .NET.
Por exemplo:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None
Observação
No .NET 8, o comando dotnet publish
usa como padrão a configuração Release
. Portanto, a configuração de build pode ser omitida da linha de comando.
A publicação cria o aplicativo, copiando o executável para a pasta bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish. Nessa pasta, há um arquivo exe, que é o aplicativo criado. Esse aplicativo pode ser iniciado ou a pasta inteira pode ser copiada para outro computador e iniciada lá.
Uma diferença importante em relação a um aplicativo empacotado é que ele não incluirá o runtime do .NET na pasta. Isso significa que o aplicativo exigirá que o runtime do .NET seja instalado primeiro nos computadores que eventualmente executarão o aplicativo. Para garantir que o aplicativo também contenha todos os componentes do runtime, o argumento -p:WindowsAppSDKSelfContained
pode ser fornecido durante a publicação. Por exemplo:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true
Para obter mais informações sobre o comando dotnet publish
, consulte dotnet publish.