Compartilhamento de código de projetos compartilhados

Projetos Compartilhados permitem que você escreva um código comum referenciado por vários projetos de aplicativo diferentes. O código é compilado como parte de cada projeto de referência e pode incluir diretivas de compilador para ajudar a incorporar a funcionalidade específica da plataforma à base de código compartilhada.

Projetos Compartilhados (também chamados de Projetos de Ativos Compartilhados) permitem que você escreva um código compartilhado entre vários projetos de destino, incluindo aplicativos Xamarin.

Eles dão suporte a diretivas do compilador para que você possa incluir condicionalmente o código específico da plataforma a ser compilado em um subconjunto dos projetos que fazem referência ao Projeto Compartilhado. Também há suporte para IDE para ajudar a gerenciar as diretivas do compilador e visualizar a aparência do código em cada aplicativo.

Se você usou a vinculação de arquivos no passado para compartilhar código entre projetos, projetos compartilhados funcionam de maneira semelhante, mas com suporte muito aprimorado ao IDE.

O que é um projeto compartilhado?

Ao contrário da maioria dos outros tipos de projeto, um projeto compartilhado não tem nenhuma saída (no formato DLL), em vez disso, o código é compilado em cada projeto que faz referência a ele. Isso é ilustrado no diagrama abaixo – conceitualmente, todo o conteúdo do Projeto Compartilhado é "copiado para" cada projeto de referência e compilado como se fosse parte deles.

Arquitetura de projeto compartilhado

O código em um Projeto Compartilhado pode conter diretivas do compilador que habilitarão ou desabilitarão seções de código, dependendo de qual projeto de aplicativo está usando o código, o que é sugerido pelas caixas de plataforma coloridas no diagrama.

Um Projeto Compartilhado não é compilado por conta própria, ele existe puramente como um agrupamento de arquivos de código-fonte que podem ser incluídos em outros projetos. Quando referenciado por outro projeto, o código é efetivamente compilado como parte desse projeto. Projetos Compartilhados não podem fazer referência a nenhum outro tipo de projeto (incluindo outros Projetos Compartilhados).

Observe que os projetos de aplicativo Android não podem referenciar outros projetos de aplicativo Android – por exemplo, um projeto de teste de unidade android não pode referenciar um projeto de aplicativo Android. Para obter mais informações sobre o Projeto Compartilhado.

Passo a passo do Visual Studio para Mac

Esta seção explica como criar e usar um Projeto Compartilhado usando Visual Studio para Mac. Consulte a seção Exemplo de Projeto Compartilhado para obter um exemplo completo.

Criando um projeto compartilhado

Para criar um novo Projeto Compartilhado, navegue até Arquivo > Nova Solução... (ou clique com o botão direito do mouse em uma solução existente e escolha Adicionar Adicionar > Novo Projeto...):

soluçãoNova

Na próxima tela, escolha o nome do projeto e clique em Criar.

Um novo Projeto Compartilhado é mostrado abaixo – observe que não há referências ou nós de componente; não há suporte para esses projetos compartilhados.

Projeto Compartilhado Vazio

Para que um Projeto Compartilhado seja útil, ele precisa ser referenciado por pelo menos um projeto capaz de compilar (como um aplicativo ou biblioteca iOS ou Android ou um projeto PCL). Um Projeto Compartilhado não é compilado quando não tem nada que faça referência a ele, portanto, erros de sintaxe (ou qualquer outro) não serão realçados até que ele tenha sido referenciado por outra coisa.

A adição de uma referência a um Projeto Compartilhado é feita da mesma maneira que referenciar um projeto de Biblioteca regular. Esta captura de tela mostra um projeto do Xamarin.iOS referenciando um Projeto Compartilhado.

Referência do projeto ao Projeto Compartilhado

Depois que o Projeto Compartilhado for referenciado por outra biblioteca ou aplicativo, você poderá criar a solução e exibir erros no código. Quando o Projeto Compartilhado é referenciado por dois ou mais outros projetos, um menu aparece no canto superior esquerdo do editor de código-fonte que mostra quais projetos fazem referência a esse arquivo.

Opções de projeto compartilhado

Quando você clica com o botão direito do mouse em um Projeto Compartilhado e escolhe Opções , há menos configurações do que outros tipos de projeto. Como os Projetos Compartilhados não são compilados (por conta própria), você não pode definir opções de saída ou compilador, configurações de projeto, assinatura de assembly ou comandos personalizados. O código em um Projeto Compartilhado herda efetivamente esses valores do que está fazendo referência a eles.

A tela Opções é mostrada abaixo : o Nome do Projeto e o Namespace Padrão são as duas únicas configurações que você geralmente alterará.

Opções de projeto compartilhado

Exemplo de projeto compartilhado

O exemplo Tasky usa um Projeto Compartilhado para conter o código comum usado pelos aplicativos iOS, Android e Windows Phone. SQLite.cs Os arquivos de código-fonte e TaskRepository.cs utilizam diretivas do compilador (por exemplo, #if __ANDROID__) para produzir saídas diferentes para cada um dos aplicativos que os referenciam.

A estrutura completa da solução é mostrada abaixo (no Visual Studio para Mac e no Visual Studio, respectivamente):

O projeto Windows Phone pode ser navegado de dentro de Visual Studio para Mac, mesmo que esse tipo de projeto não tenha suporte para compilação em Visual Studio para Mac.

Os aplicativos em execução são mostrados abaixo:

Exemplos de iOS, Android Windows Phone

Resumo

Este documento descreveu como os Projetos Compartilhados funcionam, como eles podem ser criados e usados no Visual Studio para Mac e no Visual Studio e introduziu um aplicativo de exemplo simples que demonstra um Projeto Compartilhado em ação.