Estrutura de destino para Xamarin.Mac

Este artigo aborda as estruturas de destino (Bibliotecas de Classes Base) disponíveis para Xamarin.Mac e as implicações de usá-las em seu projeto Xamarin.Mac.

do Xamarin.MacOpções de estrutura de destino para opções de estrutura de destino

Tela de fundo

Cada programa ou biblioteca do .NET depende da funcionalidade fornecida pela BCL (Biblioteca de Classes Base). Esse BCL inclui assemblies como mscorlib, System, System.Net.Http e System.Xml que fornecem a funcionalidade comum incorporada a todas as linguagens .NET.

Ao longo dos anos, desenvolveu várias versões diferentes desse BCL, otimizadas para diferentes casos de uso. O BCL "desktop" inclui um conjunto mais rico de bibliotecas que podem ser muito pesadas para outros casos de uso, enquanto o dispositivo móvel se concentra em garantir que as APIs sejam seguras para vinculação, o que remove o código não utilizado para reduzir o volume do aplicativo.

Uma das repercussões mais importantes dessas diferentes Estruturas de Destino é que todos os assemblies em um determinado programa devem ter como destino assemblies BCL compatíveis. Se esse não fosse o caso, você poderia ter dois assemblies vinculados em versões diferentes do System.dll discordando sobre a assinatura de um determinado tipo. Uma biblioteca compartilhada pode ter como destino o .NET Standard 2, que é o subconjunto comum das Estruturas de Destino ou uma estrutura de destino específica.

Há três opções do Target Framework disponíveis para o Xamarin.Mac, cada uma com vantagens e compensações diferentes:

  • Moderno (chamado móvel na documentação mais antiga) – um subconjunto muito semelhante ao que alimenta o Xamarin.iOS, altamente ajustado para desempenho e tamanho. Essa Estrutura de Destino é segura para que esses projetos possam ter seu volume final drasticamente reduzido removendo o código não utilizado.

  • Completo (chamado XM 4.5 na documentação mais antiga) – um subconjunto muito semelhante ao BCL "desktop", com algumas pequenas remoções. Como o Target Framework é quase idêntico ao net45 (e posterior), ele pode facilmente consumir muitos nugets que não fornecem compilações do netstandard2 ou do Xamarin.Mac específicas. No entanto, devido ao uso de System.Configuration, ele é incompatível com a vinculação.

  • Sem suporte (chamado Sistema na documentação mais antiga) – em vez de vincular a um BCL fornecido pelo Xamarin.Mac, use o sistema atual instalado mono. Isso fornece o conjunto mais completo de assemblies, incluindo alguns conhecidos por serem problemáticos (System.Drawing, por exemplo). Essa opção existe apenas tem um "último recurso" e é altamente sugerido esgotar outras opções antes de usá-la. Como o nome indica, o uso não tem suporte por canais de suporte oficiais.

Definindo a estrutura de destino

Para alterar para o tipo de Estrutura de Destino para um projeto Xamarin.Mac, faça o seguinte:

  1. Abra o projeto Xamarin.Mac no Visual Studio para Mac.

  2. No Gerenciador de Soluções, clique duas vezes no arquivo do projeto para abrir a caixa de diálogo Opções de Projeto.

  3. Na guia Geral , selecione o tipo de Estrutura de Destino que atende às necessidades do aplicativo:

    Usando a janela Opções do Projeto para escolher uma estrutura de destino

  4. Clique no botão OK para salvar suas alterações.

Você deve Limpar e, em seguida, Recompilar seu projeto Xamarin.Mac depois de alternar o tipo de Estrutura de Destino.

Resumo

Este artigo abordou brevemente os diferentes tipos de Estruturas de Destino (Bibliotecas de Classes Base) disponíveis para um aplicativo Xamarin.Mac e quando cada tipo de estrutura deve ser usado.