jueves, 2 de diciembre de 2010

Manejando soluciones de Visual Studio a tu gusto

Hola a todos, en este post les mostrare como migrar sus proyectos de visual studio 2008 a visual studio 2005. Se preguntaran el por que de este post, bueno en lo personal yo tuve este problema varias veces y quice solucionarlo y ahora lo comparto con ustedes.

En fin este era mi problema, cuando hacia algun proyecto en VS2008, y lo llevaba a una maquina con VS2005 por ejemplo, obviamente VS2005, me mostraba como UnrecognizedVersion y simplemente no podia abrir mi proyecto, a no ser que migre mi codigo, es decir, copy-paste lo que no era nada agradable si tenia varios archivos de codigo, recuros, etc. Ahora cual es la solucion que yo planteo, una solucion puede ser que antes de crear el proyecto se decida para que framework se va a trabajar, 2.0, 3.0 o 3.5, como VS2008 nos provee esto nosotros seleccionamos el que nos convenga, ahora como sabemos la version del framework que nos convenga?? Eso es simple, si no utilizaras cosas como Linq, metodos anonimos, WPF (Windows Presentation Foundation), WCF (Windows Communication Foundation), WF (Workflow Foundation) o CardSpaces entonces debes usar el framework 2.0, ya que todo lo que necesitas esta en esa version, ahora si usas alguno de los componentes que ya mencione obviamente debes usar como minimo el framework 3.0


Ahora vayamos a lo practico.

Como muchos sabran, las soluciones, proyectos, etc. de VisualStudio son simples archivos XML por detras, los cuales guardan informacion tal como el estado del proyecto, el autor, los recursos, los archivos de codigo fuente, referencias, etc. ¿Pero de que nos sirve todo eso?, bueno no les mencione que en estos archivos tambien se guarda la informacion del framework que estamos utilizando, o la version de VS que estamos utilizando para este proyecto. Ahora como podemos adaptar una solucion o proyecto de VS2008 a VS2005?.- Simplemente debemos ir a la carpeta donde se encuentra nuestra solucion o proyecto y tendremos un archivo sln (Solution) con el siguiente formato:
-[nombresolucion].sln
ahora si lo que pretendemos es llevar de VS2008 a VS2005, en este icono debemos ver el numero nueve, y algo que en verdad  s VS2008, ahora si llevamos este mismo proyecto a una maquina con VS2005 veremos otro tipo de icono, con el mismo formato, pero ahora no veremos un numero sino un icono como un documento de texto con el logo de VS y además dice (unrecognized  version).

Para solucionar esto, debemos editar el archivo .sln, para eso lo abrimos con cualquier editor de texto, en mi caso yo usare Notepad++, una vez abierto el archivo .sln tendremos algo como esto:







Ahora los datos que nos interesan son los que se resaltan en la figura, como el Format Version, el cual nos indica la version interna de visual studio. Otro dato importante es el "visual studio" en el que la solución puede ser abierta. Ahora, hasta donde yo se y experimente, estos datos pueden tomar los siguientes valores:


Format Version
Visual Studio
7.00Visual Studio 2002
8.00Visual Studio 2003
9.00Visual Studio 2005
10.00Visual Studio 2008
11.00Visual Studio 2010
Bueno, ahora teniendo esto la solución ya esta adecuada para la versión de visual studio que nosotros deseemos. Pero ahora surgira otro problema, como sabran y los que no lo saben ahora lo sabran, generalmente se dice: "voy a crear un proyecto o un solucion en visual studio", asumiendo que proyecto y solucion es lo mismo, esto es incorrecto. Una solución es un contenedor (por asi decirlo) de proyectos, es decir, una solución puede tener 1 o mas proyectos, y un proyecto ya es un contenedor de código, recursos, etc. por ejemplo una solucion puede tener un proyecto que genera una dll, otro proyecto que genera un .exe y otro que sea un sitio web asp.net, pero todos forman una solucion, es decir una solucion a un problema. Esto se puede apreciar mas en el archivo .sln que acabamos de editar:






En este caso nuestra solucion tiene dos proyectos, el primero es DemoEF4.DataL y el segundo es DemoEF4.Console, en este caso al ser mi ejemplo yo hice que DemoEF4.DataL sea un proyecto del tipo "Class Library" que generará una dll, y DemoEF4.Console sea un proyecto del tipo "Console Application". Ahora si ponen a revisar en detalle el archivo .sln se darán cuenta que en ningun lado esta la versión del framework que estamos utilizando, es por ello que ahora editaremos los archivos .csproj o .vbproj(en el caso de usar VB.net). Bueno en si la estructura de una solucion es la siguiente:













En el directorio raiz se encuentra el archivo .sln, luego existira una carpeta por cada proyecto, y dentro de cada carpeta se encotrara el codigo fuente, recursos, ademas que existira un archivo .csproj o .vbproj por proyecto. Bueno lo ultimo que nos queda hacer es editar estos .csproj o .vbproj y cambiar la version del framework, para esto de la misma forma abrimos el archivo .csproj o .vbproj con un editor de texto plano, y tendremos algo como esto:





Ahora como podemos ver, la propiedad "ToolsVersion" nos indica la versión del framework en la que este proyecto se compilará. Lo único que nos falta hacer es cambiar 3.5 por 2.0 en el caso de que nuestra aplicación este hecha para el framework 2.0.

Bueno, creo que con esto finalizo esta entrada del blog, espero que les haya gustado, perdon por los horrores ortograficos, pero en fin espero que se entienda, si tienen alguna duda, aclaracion, o si piensan que algo esta mal, solo mandenme un mail a: serguimant@gmail.com, o simplemente dejen un comentario.

Saludos.

1 comentario:

  1. oye sergio me puedes explicar como funciona WCF exactamente, los sitios que visito no lo explican coherentemente; porfavor... o talves algun ejemplo por ahi...
    gracias...

    ResponderEliminar