Compartilhar via


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.