Está en la página 1de 72

Novedades de Visual Studio 2008

Guillermo 'guille' Som


mensaje@elguille.info
Agenda

• Novedades en el IDE
• Tipos de proyectos
• Selección del .NET de destino
• Un vistazo a LINQ
• Vistazo a las novedades de Visual Basic y C#
• Acceso a datos con LINQ
Visual Studio 2008

Novedades en el IDE
Visual Studio 2008

• Con respecto a la versión anterior, el IDE no ha


cambiado demasiado
• Sigue utilizando el mismo sistema de
acoplamiento de ventanas y prácticamente todo
está como estaba en Visual Studio 2005
• Aunque hay ciertas características que hacen a
esta nueva versión más "manejera"
Visual Studio 2008

• El primer cambio lo notaremos al crear un nuevo


proyecto
• Debido a que Visual Studio 2008 utiliza la versión
3.5 de .NET Framework, y éste a su vez utiliza el
motor de la versión 2.0, los proyectos que
podemos crear tendrán en cuenta cualquiera de
las tres versiones que se basan en el "runtime"
de .NET Framework 2.0:
• .NET 2.0, .NET 3.0 y .NET 3.5
Visual Studio 2008

• Recordemos que tanto .NET 3.0 y .NET 3.5 lo que


proporcionan son extensiones a .NET 2.0
• La versión 3.0 se introdujo con Windows Vista y
supone todo el soporte para Windows
Presentation Foundation (WPF), Windows
Comunication Foundation (WCF) y Workflow
Foundation (WF)
• La versión 3.5 incluye todo el soporte para LINQ
y otras extensiones
Visual Studio 2008

• Todos estos "extras" se incluyen como


ensamblados (ficheros con la extensión .DLL)
que amplían la funcionalidad base de .NET 2.0
• Ahora lo veremos con más detalle
• Antes veamos lo que nos encontramos al crear
nuevos proyectos
Visual Studio 2008

• Cuando elegimos crear un nuevo proyecto, nos


permite seleccionar la versión de .NET
Framework
• Dependiendo de qué versión seleccionemos,
tendremos más o menos tipos de proyectos
Visual Studio 2008

• Los tipos de proyectos de Visual Basic para la


versión 3.5 de .NET Framework
Visual Studio 2008
Visual Studio 2008

• Los tipos de proyectos de Visual Basic para la


versión 2.0 de .NET Framework
Visual Studio 2008
Visual Studio 2008

• Otro aspecto que ha cambiado (para mejor), es a


la hora de añadir nuevos elementos a un
proyecto existente
• Ahora tenemos un panel con grupos de
elementos relacionados que nos facilita la
selección y sobre todo la búsqueda de lo que
queremos añadir
• Al seleccionar uno de esos grupos, solo se
muestran los elementos relacionados
Visual Studio 2008
Visual Studio 2008

• Además, esa ventana se puede cambiar de


tamaño, por tanto, si se muestran muchos
elementos, podremos verlos todos
• En la siguiente captura he reducido el tamaño de
esa ventana, pero para que quepa en la
diapositiva, en la demo veremos el caso contrario
Visual Studio 2008
DEMO
Crear nuevos proyectos con Visual Studio 2008 y añadir nuevos
elementos
Visual Studio 2008

Tipos de proyectos
Visual Studio 2008

• Hagamos un pequeño repaso por los tipos de


proyectos que podemos crear con Visual Studio
2008
• Los tipos de proyectos que podemos crear
dependerá de la versión que tengamos de Visual
Studio y de las características que instalemos
• En estas capturas estamos viendo los proyectos
de Visual Studio 2008 Team System
Visual Studio 2008

• Pero básicamente la diferencia con la versión


anterior son los proyectos basados en .NET 3.0
• Estos nos permiten crear aplicaciones WPF, WCF
y Workflow
• Estos dos últimos están en su propia "rama" y los
de WPF se incluyen en la de Windows
Visual Studio 2008
Visual Studio 2008
Visual Studio 2008
Visual Studio 2008

• También encontraremos proyectos para AJAX


Visual Studio 2008
Visual Studio 2008

• En lo que respecta a los proyectos para Office,


además de incluir los de la versión 2003,
podemos crear proyectos para Office 2007
Visual Studio 2008
Visual Studio 2008

• Como vemos, tenemos todos los nuevos tipos de


proyectos que han ido apareciendo con las
nuevas versiones de .NET y otras tecnologías
DEMO
Vistazo rápido a los diferentes tipos de proyectos que se pueden
crear con Visual Studio 2008
Visual Studio 2008

Selección del .NET de destino


Visual Studio 2008

• Como hemos visto, a la hora de crear un nuevo


proyecto, podemos indicar la versión de .NET
• Al seleccionar la versión se muestran los tipos de
proyectos que podemos crear
• Algunos de esos proyectos son específicos de
cada versión
• Por ejemplo, las aplicaciones WPF solo se pueden
crear con .NET 3.0 o superior
• Las aplicaciones que usen LINQ solo se podrán crear
con .NET 3.5
Visual Studio 2008

• Sin embargo, muchos otros son válidos en las


tres versiones soportadas
• Y aquí hay que hacer dos aclaraciones
• La primera es que en cualquier momento
podemos cambiar la versión seleccionada
• Por ejemplo, si elegimos una aplicación de Windows
para .NET 3.5, podemos cambiar la versión de .NET a
cualquiera de las dos anteriores
• En este caso, solo se podrán usar los ensamblados
incluidos en esa versión
Visual Studio 2008

• La segunda aclaración es que


independientemente de qué versión elijamos
para crear la aplicación, si no usamos los
ensamblados específicos de esa versión, nuestra
aplicación podrá ejecutarse en un sistema que
tenga una versión anterior
• Por ejemplo, si al crear la aplicación indicamos .NET
3.5 y nuestro proyecto no usa nada de lo que incluye
en esa versión, la podremos distribuir en cualquier
equipo que tenga la versión 2.0 o la 3.0, sin obligar al
usuario a instalar .NET 3.5
Visual Studio 2008

• El cambio de versión lo haremos en las


propiedades del proyecto
• En Visual Basic está en opciones avanzadas de
compilación
• En Visual C# está en la ficha Aplicación
(Application)
Visual Studio 2008
Visual Studio 2008
Visual Studio 2008

• Una vez cambiada la versión, cuando elegimos


los ensamblados que queremos añadir a las
referencias, algunos se mostrarán desactivados,
ya que solo se podrán usar con versiones
posteriores de .NET Framework
Visual Studio 2008
Visual Studio 2008

Consejo
• Para evitar "tentaciones", es recomendable elegir
la versión de .NET Framework para la que
queremos crear el proyecto, de esa forma, nos
aseguramos de usar solo aquellas DLL que
funcionen con la versión elegida
Visual Studio 2008

Un vistazo a LINQ
Y a las novedades de Visual Basic y C#
Visual Studio 2008

• LINQ es una de las novedades más "sonadas" de


la nueva versión de .NET (3.5)
• LINQ es: Language INtegrated Query
• Lenguaje integrado para consultas
• Se presenta en 3 tecnologías diferentes:
• LINQ to Object
• LINQ to XML
• LINQ to ADO.NET
o LINQ to DataSet
o LINQ to SQL
Visual Studio 2008

• En todos los casos se utilizan instrucciones


propias de los lenguajes al estilo de las consultas
de SQL
• Y la diferencia entre esas tecnologías es con qué
tipos de datos trabajará
Visual Studio 2008

• LINQ to Objects trabaja sobre colecciones en la


memoria
• LINQ to XML da soporte al código XML, que en
el caso de Visual Basic se integra "totalmente" en
el propio lenguaje, permitiendo usar
directamente código XML
• LINQ to ADO.NET nos permite usar esas
instrucciones de consultas directamente con
bases de datos
Visual Studio 2008

• Las instrucciones de consulta nos permiten


utilizarlas para acceder a los datos, tanto si están
en la memoria (LINQ to Objects) como si están
en una base de datos (LINQ to ADO.NET)
• Veamos un pequeño ejemplo de acceso a una
colección numérica
Visual Studio 2008
var nums = new[] { 1, 2, 3, 4, 5, 6 };
var res = from n in nums
where n > 3
select n;

foreach(var i in res)
Console.WriteLine(i);

Dim nums() As Integer = {1, 2, 3, 4, 5, 6}

Dim res = From n In nums _


Where n > 3 _
Select n
For Each i In res
Console.WriteLine(i)
Next
Visual Studio 2008

• Además de las nuevas instrucciones que dan


soporte al lenguaje de consulta, se ha incluido lo
que se conoce como tipos anónimos
• Esto nos permite crear tipos de datos "al vuelo",
muy útil para el valor devuelto en cada elemento
de una consulta de LINQ
Visual Studio 2008
var res2 = from n in nums
where n > 3
select
new { Número = n,
Descripción = "El valor del número es " + n };
foreach(var t in res2)
Console.WriteLine(t.Descripción);

Dim res2 = From n In nums _


Where n > 3 _
Select _
New With {.Número = n, _
.Descripción = "El valor del número es " & n}
For Each t In res2
Console.WriteLine(t.Descripción)
Next
Visual Studio 2008

• En el ejemplo anterior, lo que cada elemento de


la consulta resultante contiene es un tipo con
dos propiedades, la primera de tipo entero y la
segunda de tipo cadena
Visual Studio 2008

• Y si hemos sido observadores, hasta en un


lenguaje tan estricto como C#, nos permite
asignar valores sin necesidad de indicar el tipo
de la variable
• Esto es lo que se conoce como inferencia de tipo
• Con esta característica, el compilador "adivina" el
tipo de la variable según el valor asignado
• En el siguiente ejemplo, la variable numero es de
tipo entero y cadena es de tipo String
Visual Studio 2008
var numero = 10;
var cadena = "Hola";

Dim numero = 10
Dim cadena = "HOla"
Visual Studio 2008

• La inferencia de tipos solo se puede usar de


forma local, es decir, a nivel de un método o
función
• No se puede usar ni a nivel de clase, ni en las
variables de los parámetros de los métodos, ni
como valor devuelto por un método o una
propiedad
• Esto mismo es aplicable a los tipos anónimos
Visual Studio 2008

• Otra de las novedades es lo que se conoce como


métodos extensores
• Esta característica nos permite añadir métodos a
clases existentes
• El propio .NET Framework 3.5 lo utiliza para
ampliar la funcionalidad de las clases existentes
• Y es lo que permite la utilización de las nuevas
instrucciones de consulta (LINQ)
Visual Studio 2008

• Nosotros podemos crear nuestros propios


métodos extensores
• Dependiendo de que lo hagamos en C# o en
Visual Basic lo haremos de una forma u otra
• En C# debemos definirlos como métodos
estáticos en clases estáticas
• En Visual Basic debemos definirlos en módulos
Visual Studio 2008

• En ambos lenguajes el primer parámetro del


método será la clase que queremos extender
• La forma de definirlos también depende del
lenguaje
• Veamos un ejemplo en cada uno de estos
lenguajes
Visual Studio 2008
static public int Total(this string str)
{
return str.Length;
}

var tot = "Hola Mundo".Total();


Visual Studio 2008
<System.Runtime.CompilerServices.Extension()> _
Public Function Total(ByVal str As String) As Integer
Return str.Length
End Function

Dim tot = "HOla Mundo".Total


Visual Studio 2008

• En C# debemos usar la instrucción this delante


del primer parámetro
• En Visual Basic debemos asignar el atributo
Extension que está definido en
System.Runtime.CompilerServices
• IntelliSense mostrará los métodos extensores de
cada clase con una flechita azul
Visual Studio 2008
Visual Studio 2008

• Hay más novedades en ambos lenguajes, pero


necesitaríamos varias horas para ver cada uno de
ellos... ¡otra vez será! 
• Pasemos a ver un poco de LINQ to ADO.NET y
los asistentes que incluye Visual Studio 2008
Visual Studio 2008

Acceso a datos con LINQ


Los asistentes de Visual Studio 2008 para LINQ
Visual Studio 2008

• LINQ to DataSet nos permite crear objetos


DataSet fuertemente tipados y realizar consultas
usando las instrucciones del lenguaje
• LINQ to SQL permite el acceso a bases de datos
de SQL Server usando dos formas:
• Creando tipos de datos que se "ligan" con las
tablas
• Creando objetos con el O/R Designer (diseñador
de objetos relacionales)
Visual Studio 2008

• Con LINQ to DataSet, simplemente creamos un


DataSet con el asistente y ya podremos usar las
instrucciones de consulta integrada en los datos
expuestos por ese DataSet
Visual Studio 2008
Dim ta As New EmployeesTableAdapter
Dim datos As New DataSet1
ta.Fill(datos.Employees)
Dim res = From emp In datos.Employees _
Where emp.Country.StartsWith("U") _
Select emp.LastName, emp.FirstName
Visual Studio 2008

• Con LINQ to SQL, podemos ligar los datos de


dos formas distintas:
• Usando LINQ to SQL Entity classes
• O con el diseñador de objetos relacionales (O/R)
Visual Studio 2008

LINQ to SQL Entity Classes y las tablas


• Para ligar una tabla con una clase, definimos la
clase y los campos a los que queremos acceder
• Se necesita una referencia a System.Data.Linq.dll e importar los espacios de nombres:
System.Data.Linq.Mapping para los atributos y System.Data.Linq para el DataContext

<Table(Name:="Customers")> _
Public Class Customer
<Column()> _
Public CustomerID As String
<Column()> _
Public City As String
<Column()> _
Public ContactName As String
<Column()> _
Public Country As String
End Class
Visual Studio 2008

• Por supuesto, solo podremos acceder a los


campos que hayamos definido en la clase
Dim sCnn = "Data Source = (local)\SQLEXPRESS; " & _
"Initial Catalog = Northwind; " & _
"Integrated Security = True"

Dim dc As New DataContext(sCnn)


Dim losClientes = dc.GetTable(Of Customer)()

Dim q1 = From cli In losClientes _


Where cli.Country.StartsWith("U") _
Order By cli.ContactName _
Select cli

For Each c In q1
Console.WriteLine("{0}: {1}, {2}", _
c.CustomerID, c.ContactName, c.Country)
Next
Visual Studio 2008

• Con el diseñador de objetos relacionales,


arrastraremos las clases y los procedimientos
almacenados (o funciones) y se generará el
código para acceder a ellos directamente
• Es casi como los DataSet tipados, pero
accediendo directamente a los objetos de la base
de datos por medio de clases y métodos
Visual Studio 2008
DEMO
Acceso a datos con LINQ to SQL
Ya puedes conseguir
un libro sobre todas
las Novedades de
Visual Basic 2008
en formato PDF

http://www.elguille.info/NET/NovedadesVB9
Nuevo libro en preparación

Si te gustan los puntos y comas... tu libro es:

Aprenda C# 3.0 desde 0.0


Parte 3: Lo nuevo

http://www.elguille.info/NET/AprendaCSharp3
Novedades de Visual Studio 2008

Guillermo ‘guille’ Som


mensaje@elguille.info
http://www.elguille.info/