Soporte Multi-Targeting de VS 2008

A principios de este mes en el TechEd anunciamos el nombre oficial de Visual Studio "Orcas" - que se llamará Visual Studio 2008. También dijimos que el nombre oficial del .NET Framework "Orcas" será .NET Framework 3.5 (incluye LINQ, soporte integrado para ASP.NET AJAX, nuevos controles de datos para ASP.NET, y mucho más).

VS2008 y .NET 3.5 Beta 2 se publicarán a finales de verano, y la Beta2 tendrá una licencia go-live para aquellos que quieran poner sus aplicaciones en producción usando las nuevas características inmediatamente.

¿Que es Multi-Targeting?

Las pasadas versiones de Visual Studio tan sólo soportaban una versión concreta del .NET Framework. Así, VS2002 sólo trabajaba con la versión .NET 1.0, VS2003 con .NET 1.1 y VS2005 sólo con .NET 2.0.

Uno de los grandes cambios que estamos haciendo con VS 2008 es dar soporte a lo que llamamos "Multi-Targeting" - consiste en que Visual Studio permitira trabajar con varias versiones del .NET Framework, con lo que los desarrolladores serán capaces de empezar a usar las nuevas características que vienen con Visual Studio sin tener que actualizar proyectos existentes y desplegar las aplicaciones para que usen una nueva versión de la librería del .NET Framework.

Ahora, cuando abramos un proyecto existente o cuando creemos uno nuevo en VS 2008, podremos seleccionar con qué versión del .NET Framework queremos trabajar - de esta forma, el IDE actualizará los compiladores y el conjunto de características para cada versión. Entre otras cosas, conseguirmos que controles, projectos, templates y las referencias a assemblies que no funcionaban con una versión del framework se ocultarán, y cuando construyamos la aplicación, seremos capaces de cojer el resultado de la compilación, ponerlo en una máquina que sólo tenga una versión antigua del .NET Framework, y la aplicación funcionará.

Crear un nuevo proyecto en VS 2008 para .NET 2.0

Para ver un ejemplo de esto del "multi-targeting" en VS 2008 Beta2, seleccionamos "FileNew Project" para crear una nueva aplicación.

Fijaos en la esquina superior derecha que sale a continuación: una lista desplegable que nos permite indicar con qué versión del .NET framework queremos trabajar en el nuevo proyecto. Si seleccionamos el .NET Framework 3.5 veremos un nuevo conjunto de templates que no estaban en las versiones anteriores de VS (incluyendo el soporte para aplicaciones WPF y proyectos WCF):

Pero si seleccionamos el .NET 2.0, automaticamente filtrará la lista de proyectos para mostrar aquellos que están soportados para el .NET 2.0:

Si creamos una aplicación Web ASP.NET habiendo seleccionado el framework 2.0, creará un proyecto web cuyas propiedades de compilación, referencias a assemblies, y las opciones del web.config estarán configuradas para servidores ASP.NET 2.0

Si nos vamos a la barra de herramientas, veremos los controles que funcionan con ASP.NET 2.0:

Y si le damos a "AddReference" en la ventana para seleccionar los assembly, veremos que los assemblies que no están soportados para .NET 2.o se mostrarán en gris claro y no podrán ser añadidos al proyecto (fijaos en que el boton "ok" no está activo cuando seleccionamos un assembly de .NET 3.0 o 3.5):

¿Pero para que usar VS 2008 si no vamos a usar el nuevo .NET 3.5?

Os estaréis preguntando: "¿qué me aporta VS 2008 para proyectos en ASP.NET 2.O que no me aporta VS 2005?" Bueno, las buenas nuevas son que tendremos un monton de nuevas características de la herramienta que no tenía VS 2005 y que le podemos sacar partido inmediatamente en nuestros proyectos existentes sin tener que actualizar la versión del Framework. Unas cuantas de estas características para el desarrollo web son:

  1. Intellisense para JavaScript
  2. Debugging de JavaScript mucho más rico.
  3. Soporte para MasterPages anidadas en la vista de diseño.
  4. Edición de CSS ricas y layout en el diseñarod WYSIWYG
  5. Soporte para las vistas de diseño y código a la vez.
  6. Un diseñador de páginas ASP.NET mucho más rápido - mejoras increibles en el rendimiento cuando cambiamos entre las vistas codigo/diseño
  7. Generación automática de script SQL y soporte para desplegar bases de datos en servidores remotos.

Podremos usar todas estas nuevas características con cualquier versión del Framework - sin tener que actualizar nuestros proyectos para versiones nuevas del framework. Escribiré sobre estas características (y de las nuevas) en las próximas semanas.

¿Cómo podemos actualizar un proyecto existente a la próxima versión de .NET 3.5?

Si más tarde queremos actualizar nuestros proyectos/sitios web a la versión 3.0 o 3.5 del .NET Framework, podemos hacer clic derecho en el proyecto en el explorador de soluciones y nos vamos a las propiedades:

Podemos cambiar la versión del Framework en la lista desplegable. Esto hará que VS actualize automáticamente las opciones del compilador y las referencias del proyecto para que use la versión adecuada. Por ejemplo, añadirá por defecto algunos de los assemblies de LINQ, al System.Web.Extensions que viene con .NET 3.5 que proporciona nuevos controles y nuevas características de ejcución y añadirá soporte para ASP.NET AJAX (con esto ya no tendremos que descargar por separado ASP.NET AJAX 1.0 e instalarlo - ya viene integrado en la instalación de .NET 3.5):

Una vez actualizada la versión también veremos las cosas nuevas que podemos añadir en "addnew items", podemos añadir referencias a assemblies de .NET 3.5 y veremos los nuevos controles de .NET 3.5 en la barra de herramientas.

Por ejemplo, abajo podemos ver el nuevo control <asp:listview> ( es un nuevo control que nos permite realizar reporting, edicion, inserciones, borrado  y paginación de datos - con un control del 100% de las marcas generadas sin ningún estilo ni ningún elemento html), y el nuevo <asp.linqdatasource> (que nos permite enlazar y trabajar sobre modelos de datos LINQ to SQL), y <asp:datapager> en la sección de controles de datos en la barra de herramientas:

Además, también podemos "desactualizar" la versión del framework que queramos usar, es decir, podemos tener un proyecto que empezamos con la versión 3.5 y cambiar la versión que usará a la 2.0. De nuevo, el IDE eliminará las referencias a los asemblies, actualizará el web.config, y las opciones del compilador (nota: obviamente, si tenemos código en el proyecto que use las APIs de la versión 3.5, este código dejará de funcionar).

¿Qué pasa con .NET 1.0 y 1.1?

Lamentablemente VS2008 sólo puede hacer este "multi-targeting" con las versiones de .NET 2.0, 3.o y 3.5 - y no sobre versiones más antiguas. Esto es devido a que hubo grandes cambios en el motor del CLR entre las versiones de .NET 1.X y 2.X que hacen que el debugging muy difícil. Al final, el coste que tenía este trabajo era tan grande e implicaba a tantas partes de Visual Studio que no fuimos capaces de añadir el soporte para la versión 1.1.

VS 2008 funciona perfectamente con VS 2005, VS 2003 y VS 2002. De forma que es posible seguir creando proyectos para .NET 1.1 con VS 2003 en la misma máquina que tenga VS 2008.

¿Cual es la compatibilidad entre VS 2005 - VS 2008 y .NET 2.0 - .NET 3.5?

Estamos intentando asegurar que el .NET Framework 3.5 es una actualización compatible de .NET 2.0, y no es necesario cambiar ningún código para que el código funcione con la nueva versión del Framework. Deliberadamente hemos hecho ninguna modificaciones que no rompan los assemblies existentes en la versión 3.5, y las nuevas características las hemos puesto en assemblies separados para minimizar las probabilidades de cambios que afecten a la versión anterior.

Tampoco hemos cambiado el modelo de proyecto en VS 2008. !No quiero volver a pasar por eso otra vez!. Ambos modelos: "web site" y "web application project" estarán soportados completamente de aquí en adelante.

Espero que sirva.

Scott

Traducido por: Juan María Laó Ramos. Microsoft Student Partner.

toH tlhIngan Hol DajatlhlaH ‘e’ DaneH’a’?

6 pensamientos en “Soporte Multi-Targeting de VS 2008

  1. Pingback: Intellisense en JavaScript con VS 2008 « Thinking in .NET

  2. Pingback: .net y algo mas : Soporte Multi-Targeting de VS 2008

  3. Pingback: Debugging de JavaScritp con VS 2008 « Thinking in .NET

  4. Pingback: VS 2008 para proyectos ASP.NET 2.0 y AJAX 1.0 « Thinking in .NET

Deja un comentario