Compartilhar via


Desenvolvendo para múltiplas versões do .NET Framework com o Visual Studio 2010

A arquitetura do Visual Studio 2010 (VS 2010) passou por diversas melhorias no que diz respeito ao desenvolvimento para múltiplas versões do .NET Framework (Multi-targeting). Como prometido, continuarei escrevendo sobre as novidades do Visual Studio e nesse post vou comentar sobre os benefícios que essas melhorias trazem para os desenvolvedores.

Veja também outros posts sobre as novidades do Visual Studio 2010:

De onde veio?

Antes de entrarmos nos detalhas do VS 2010, vale lembrar que o Visual Studio 2008 (VS 2008) foi a primeira versão a proporcionar o desenvolvimento para múltiplas versões do .NET Framework. Com ele criamos ou trazemos projetos desenvolvidos com o Framework 2.0, editamos e compilamos utilizando o próprio VS 2008 sem a necessidade de fazer um upgrade de framework para a versão 3.5. Isso proporcionou com que os desenvolvedores pudessem tirar proveito rapidamente das novas funcionalidades das ferramentas do VS 2008 sem necessariamente precisar contar com atualizações de framework em seus clientes ou servidores de produção.

Essa solução funcionou e continua funcionando no VS 2008, porém pode gerar problemas, principalmente pelo fato de que o intellisense não funciona corretamente já que não distingui a versão do framework que você está utilizando, ele simplesmente mostra todas as bibliotecas da versão 3.5, mesmo quando a versão alvo do .NET Framework é a versão 2.0. Sua atenção precisa ser redobrada nesse caso para não adicionar funcionalidades não suportadas.

E agora?

São justamente os avanços na arquitetura do Visual Studio 2010 que além de outras melhorias, proporcionam uma experiência muito melhor e mais precisa para o desenvolvedor durante o desenvolvimento para múltiplas versões do .NET Framework.

O VS 2010 traz agora para cada versão do .NET Framework uma assemblie de referência (reference assemblies) contendo somente metadados sobre cada versão do .NET Framework. Esses metadados são o suficiente para garantir que o intellisense apresente com precisão somente as bibliotecas da versão .NET Framework sendo utilizada. Além disso, essa arquitetura permite com que outros vários lugares dentro da IDE também possam refletir a assinatura da versão utilizada como as propriedades do grid de propriedades dentro do designer, listas de API dentro do browser de objetos, etc...

Na Prática

Para entendermos melhor como funciona essas funcionalidades de desenvolvimento para múltiplas versões do .NET Framework, vamos criar um projeto Web tendo como alvo o Framework 2.0 utilizando o Visual Studio 2010. Ao mesmo tempo, vamos criar uma outra tendo como alvo o .NET 4.0 para compararmos.

Logo na tela de criação do projeto, podemos observar que ao selecionar o framework alvo de nossa aplicação, somente os templates validos para a versão escolhida é exibida na caixa de novos projetos. Veja a comparação nas imagens abaixo.

DialogBox2.0Caixa de novos projetos - .NET Framework 2.0

imageCaixa de novos projetos –.NET Framework 4.0

 

Essa funcionalidade de listar somente os projetos relacionados ao framework escolhido, já existia no VS 2008 e obviamente continua no VS 2010, o que vem como novidade é que tanto a caixa de propriedades quanto e intellisense, trazem somente métodos/propriedades/eventos suportados no .NET 2.0 quanto esta versão é selecionada.

image
Caixa de propriedades - .NET Framework 2.0

 

image
Caixa de propriedades - .NET Framework 4.0

Nas imagens acima podemos observar que além da diferença de código HTML padrão entre as duas versões do .NET Framework, notamos a diferença entre as opções na caixa de propriedades. Quero destacar aqui uma nova propriedade do ASP.NET 4.0, o “ClientIDMode”, que agora esta presente em todos os controles e nos deixa controlar como os IDs dos controles são mostrados, evitando nomes feios ou de difícil identificação.

A seguir, quando estamos escrevendo nosso código, o intellisense passa nos dar somente opções relacionadas ao .NET 2.0. Veja a imagem do objeto “Response”, por exemplo, e compare as opções listadas para cada uma das versões do framework.

imageIntellisense - .NET Framework 2.0

 

image 
Intellisense - .NET Framework 4.0

Além disso, quando compilamos e iniciamos a aplicação MyWeb2.0App utilizando o web-server já embutido do Visual Studio, nossa aplicação será compilada e inicializada utilizando a versão ASP 2.0, e o depurador do VS 2010 irá utilizar o CLR 2.0 para depurar a aplicação.

image 
VS web-server - .NET Framework 2.0

image
VS web-server - .NET Framework 4.0

E se eu decidir trocar o framework alvo de uma aplicação já existente?

Caso seu objetivo seja migrar uma aplicação já existente de 2.0 para 4.0, o Visual Studio 2010 também proporciona essa possibilidade. Basta clicar com o botão direito em cima do projeto no “Solution Explorer” e clicar em propriedades trazendo a caixa de opções. Uma vez aberta, é só selecionar o framework alvo no menu drop-down “Target Framework”.

image Propriedades da Aplicação

Concluindo

Uma dúvida muito comum entre os desenvolvedores que estão interessados em instalar o Visual Studio 2010 é exatamente sobre a compatibilidade de aplicações que estão sendo ou já foram desenvolvidas com versões anteriores do VS. O que posso dizer é que o Visual Studio 2010 possibilita com que possamos tirar proveito de todas as novidades e melhorias na IDE desta versão para projetos já existentes que não necessariamente utilizem o .NET 4.0. Dessa forma nós não precisamos mover imediatamente nossos projetos ou de nossos clientes para o .NET 4.0 para aproveitar tudo que o VS 2010 está trazendo para melhorar a experiência do desenvolvedor e com uma precisão com relação ao framework alvo ainda maior que antigamente.

Diante disso, eu recomendo que se você ainda não tem o VS 2010 instalado, que instale no mínimo a versão teste a faça uma experiência com as aplicações que você já tem existente hoje. Utilize as novidades da IDE do VS 2010 e comprove as melhorias de navegabilidade e edição de código, só com isso tenho certeza de que você não vai querer desenvolver mais em verões anteriores. Aconteceu comigo! :-)

Veja também outros posts sobre as novidades do Visual Studio 2010:

Abraços e até o próximo post,
JP Clementi
https://www.twitter.com/jpclementi

Technorati Tags: Visual Studio 2010,VS2010

del.icio.us Tags: Visual Studio 2010,VS2010