Esquema geral da Common Language RuntimeVocê sabia que com Portable Class Libraries é possível rodar o mesmo binário em diferentes CLRs?

Bom, mas antes disso: Você sabia que há mais de uma CLR? Aliás, o que é CLR mesmo? Smile

Common Language Runtime é a parte do .NET Framework onde seu código é executado. Os diversos serviços essenciais para uma aplicação .NET, tais como o compilador JIT e os gerenciadores de código e memória, são parte da CLR. Mal comparando, a CLR equivale à máquina virtual (JVM) do Java.

Originalmente a Microsoft criou uma única máquina virtual / CLR, que vem evoluindo desde o .NET 1.0. Essa CLR presente no .NET é a versão de referência, baseada na especificação ECMA/ISO da Common Language Infrastructure.

Entretanto, quando surgiu a necessidade de rodar código .NET em outros ambientes – tais como num smartphone ou mesmo num browser – percebeu-se que a enorme quantidade de recursos da CLR havia, de certa forma, se tornado um problema. A CLR era maior do que seria possível hospedar nesses ambientes restritos. Foi aí que começaram a surgir novas CLRs:

  • Silverlight (browser);
  • Silverlight (Windows Phone 7);
  • .NET Compact Framework;
  • .NET Micro Framework;
  • Xbox etc.

Todas essas CLRs têm pontos em comum, o que significa que era possível escrever código “compartilhável” – ou seja, um mesmo código-fonte podia ser reaproveitado em diferentes projetos (exemplo comum: WPF, Silverlight Browser e Silverlight WP7). Ou seja, havia a compatibilidade de código, mas não a compatibilidade binária para que assemblies produzidos pelo Visual Studio pudessem ser diretamente referenciados por diferentes plataformas.

É aqui que voltamos ao assunto deste post. Com as Portable Class Libraries é possível criar assemblies que podem ser diretamente compartilhados entre diferentes plataformas/CLRs. Finalmente a tão conveniente compatibilidade binária!

O que muda?

Quando você usa Portable Class Libraries, o Visual Studio garante que o código que você está escrevendo – e o binário resultante – serão compatíveis com todas as plataformas que você selecionar. A consequência natural disso é que você sempre estará nivelando pela plataforma com menos recursos.

Todos os outros benefícios oferecidos pelo Visual Studio – testes de unidade, Intellisense, Intellitrace e outros – continuam funcionando exatamente da mesma forma com que estamos acostumados.

Como usar?

Portable Class Library é um novo modelo de projeto disponível no Visual Studio “11”. Basta usar esse novo modelo de projeto no lugar do antigo Class Library:

Criando um novo projeto Portable Class Library no VS11

Se você ainda estiver usando o Visual Studio 2010, pode baixar o modelo de projeto a partir da Visual Studio Gallery:

Extensão "Portable Library Tools" para criar Portable Class Libraries no VS2010

Depois disso é só criar seu projeto no Visual Studio 2010!

Um abraço,
Igor

Para saber mais:

Igor Abade

Igor Abade V. Leite ([email protected]) é Microsoft MVP (Most Valuable Professional) de Visual Studio ALM desde 2006. Palestrante em diversos eventos da comunidade de desenvolvimento de software (TechEd Brasil, The Developers’ Conference, DevOps Summit Brasil, Agile Brazil, Visual Studio Summit, QCON e outros), é também autor de artigos em revistas e sites como o MSDN Brasil. Desde março de 2011 é um dos sócios da Lambda3, uma consultoria especializada em ALM, desenvolvimento de software e treinamentos. Siga-o no Twitter @igorabade.