.NET Framework 1.1 com Visual Studio 2005

Desde o lançamento do MSBuild na Framework 2.0, surgiu uma questão que passava pela forma de se conseguir construir aplicações.NET 1.1.

Esta exigência decorre de usuários que querem utilizar o Visual Studio 2005 .NET 2.0, mas que precisavam de continuar a servir os clientes que utilizam .NET 1.1(por exemplo utilizadores que continuam a desenvolver soluções para clientes que utilizam CRM 3.0).

Foi então criado o toolkit MSBuild Extras para.NET 1.1. O "MSBee" é um complemento para MSBuild que permite a quem desenvolve criar aplicações geridas no Visual Studio 2005, que tenham como alvo a Framework .NET 1.1.

Usar o MSBee

MSBee targets in migrated VS projects

Para construir projectos utilizando MSBee targets e tasks, e assim produzir uma assembly .NET 1.1, um utilizador tem de adicionar um elemento de importação (.targets) para a linguagem MSBee adequada no projecto de Visual Studio. A localização do elemento de importação é significativo uma vez que o arquivo .targets importado contém versões alteradas de targets que já existem no MSBuild.

 Para usar as versões MSBee dos .targets, estes têm de ser importados após os seus homólogos do MSBuild. Este comportamento aplica-se a todos os elementos MSBuild. A título de exemplo, o último valor atribuído a uma propriedade é o valor utilizado ao longo de todo o processamento do projecto.·

A declaração da importação para os .targets MSBee, inclui duas condições que controlam quando a importação deve ocorrer:

1.      Uma condição verifica se a propriedade "TargetFX1_1" é definida como true.

2.      A outra condição verifica se a propriedade "BuildingInsideVisualStudio" é definida para false.

O objectivo da sua existência é apenas importar os arquivos .targets quando o utilizador quiser obter assemblies .NET 1.1 e se está a executar o MSBuild a partir da linha de comando.

 

Importação de targets MSBee

Poder-se-ão importar os ficheiros .target de duas formas distintas:

  1. Adicionar directamente os targets MSBee a cada ficheiro de projecto (.proj)
  2. Especificar os ficheiros target utilizando a propriedade Custom Targets.

Importar targets MSBee para os Project Files

Para importar os targets MSBee para um projecto de VS, pesquisa-se pelo elemento import. Para um Projecto C#, a linha que procuramos é a seguinte:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Imediatamente abaixo, introduza-se a seguinte tag de importação:

<Import Project= "$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition=" '$(BuildingInsideVisualStudio)' == '' AND '$(TargetFX1_1)'=='true'" />

A propriedade Custom Targets

A propriedade MSBuild CustomAfterMicrosoftCommonTargets, permite aos utilizadores evitar importar o ficheiro .targets para cada projecto.

Uma Linguagem

Para uma solução que apenas contenha uma linguagem, no nosso caso o C#, usa-se a propriedade CustomAfterMicrosoftCommonTargets para especificar o .targets para a linguagem em questão.

Para uma solução C#, abrir a linha de comandos do VS, acede-se à pasta onde esta alojado o projecto e executa-se o comando:

msbuild [ficheiroprojecto] /p:TargetFX1_1=true /p:CustomAfterMicrosoftCommonTargets=”%ProgramFiles%\MSBuild\MSBee\MSBuildExtras.Fx1_1.CSharp.targets”

Mixed-Language

Se a solução contiver duas ou mais linguagens, usa-se a propriedade CustomAfterMicrosoftCommonTargets para especificar o caminho para o ficheiro dos conditional targets que trata as linguagens da solução.

  Solução C# e VB:

msbuild [project file] /p:TargetFX1_1=true /p:CustomAfterMicrosoftCommonTargets =”<pathtargets>\MSBuildExtras.Fx1_1.Conditional.targets”

 

Mais informações podem ser encontradas no site do MSBee:

https://msbee.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18

João Soares