Para migrar o aplicativo Xamarin.Forms, crie uma nova solução MAUI.
Informações |
---|
Você deve certificar-se de que o novo nome da solução corresponda ao namespace raiz do aplicativo existente. Isso garantirá o mínimo de conflito possível ao importar os componentes existentes. |
Em um terminal, execute o seguinte comando para gerar um novo MAUI App:
dotnet new maui -n TotvsApp
Criar um novo projeto com o modelo padrão .NET MAUI App.
A nova solução será criada e conterá um arquivo TotvsApp
.sln
que pode ser aberto com o Visual Studio 2022 no Windows ou Mac.

A solução recém-gerada conterá um aplicativo MAUI simples. Os projetos MAUI têm uma nova estrutura, consolidando todos os projetos específicos de plataforma em um único projeto. Eles foram movidos para a pasta Platforms
. Ainda é possível escrever código iOS, Android ou Windows e configurações específicas para cada plataforma nesta pasta. Em Resources
conterá outros arquivos necessários para o aplicativo, como imagens, fontes, arquivos de banco de dados etc.
Para evitar erros de compilação, remova as plataformas que não são compatíveis com os pacotes do seu Aplicativo no arquivo de projeto (.csproj):
Informações |
---|
<TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
|
O primeiro passo é trazer o XAML e o código-fonte do aplicativo existente no Xamarin.Forms.Abaixo está uma lista de todos os arquivos e pastas que foram migrados.

Informações |
---|
Seria uma boa ideia adicionar o projeto MAUI a um provedor de controle de versão e verificar regularmente as alterações ao longo da migração. Isso facilitará a reversão para alterações anteriores ou a execução de algumas tentativas e erros. |
Usando o explorador de arquivos, arraste e solte o conteúdo necessário do projeto existente para a pasta raiz do seu novo projeto MAUI. O conteúdo ficará semelhante à figura abaixo.

- Exclua ou comente o conteúdo do arquivo
AssemblyInfo.cs
. As propriedades poderão ser reativadas quando o aplicativo compilar e executar sem erros. A maioria dessas propriedades foram incorporadas como parte do novo .NET MAUI csproj, portanto, verifique quais realmente são necessárias.
- Adicione o pacote
Maui Community Toolkit
no nuget:

- Adicione o pacote
sqlite-net-pcl
e suas dependências:

O registro de fontes foi simplificado no Microsoft MAUI.
- Copie as fontes do aplicativo Xamarin.Forms existente para a pasta
Resources\Fonts
em seu projeto MAUI.

- Certifique-se de que a propriedade "Build Action" esteja definida como MauiFont:

O registro de fontes foi simplificado no Microsoft MAUI.
- Copie as fontes do aplicativo Xamarin.Forms existente para a pasta
Resources\Images
em seu projeto MAUI.

- Certifique-se de que a propriedade "Build Action" esteja definida como MauiImage:

O .NET MAUI Entry é um controle de entrada de texto, que implementa a interface IEntry. No iOS, o EntryHandler mapeia o Entry para o controle nativo UITextField. No Android, o Entry é mapeado para um AppCompatEditText, e no Windows o Entry é mapeado para um TextBox, como é mostrado na figura abaixo:

O mapeador de propriedades do Entry, na classe EntryHandler, mapeia as propriedades de controle multiplataforma para a API de visualização nativa. Isso garante que, quando uma propriedade for definida em um Entry, a exibição nativa seja atualizada conforme necessário.
Bloco de código |
---|
language | c# |
---|
theme | RDark |
---|
title | Exemplo |
---|
|
void ModifyEntry()
{
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("MyCustomization", (handler, view) =>
{
#if ANDROID
handler.PlatformView.SetBackgroundColor(Colors.Transparent.ToPlatform());
#elif IOS
handler.PlatformView.BorderStyle = UIKit.UITextBorderStyle.None;
#elif WINDOWS
handler.PlatformView.FontWeight = Microsoft.UI.Text.FontWeights.Thin;
#endif
});
} |
- Crie um arquivo correspondente ao controle na pasta de sua plataforma:
