.NET Tutorial 46. Visual Studio 2010, Crystal Reports 13 y .NET Framework 3.5 SP1

Hace relativamente poco que estoy usando Visual Studio 2010.
Parafrasenado a no s茅 quien:

Visual Studio 2008 ha muerto
Viva Visual Studio 2008

馃檪

Como sabr茅is (y sino para eso esta tito Olly) en el VS2010 no se incluye el Crystal Reports.
Decir para los "no iniciados" :), que Crystal Reports es posiblemente una de las herramientas de reporting m谩s utilizadas. 驴Reporting? 驴Ein?.
Si, lo que lees. Crystal Reports permite generar "informes" con multitud de formatos, grupos, esquemas, etc. Y lo dicho, se utiliza much铆simo en el 谩mbito profesional.

Pues bien, cuando por primera vez queremos a帽adir un informe (*.rpt) a nuestra soluci贸n, el IDE de Visual Studio nos redirige a la p谩gina de Crystal Reports (ahora perteneciente a SAP) para descargar el paquete de instalaci贸n, runtimes, y merged modules.

Bien, una vez finalizada la instalaci贸n ("s贸lo" son 250 megas de nada) ya podremos a帽adir reports a nuestros proyectos.

Ete aqu铆 donde empiezan los "problemas".

Por defecto, una soluci贸n en VS2010 se inicia para ser compilada con el .NET Framework 4
Esto no es "del todo cierto" como veremos m谩s adelante. En realidad se inicia para ser compilada con el .NET Framework 4 Client Profile

Pues bien, El formulario no tiene nada de c贸digo.聽 A帽adimos un report (totalmente en blanco y sin "linkar" a ninguna BDD) a nuestro proyecto:

Repito que no hay ni c贸digo en el formulario ni en el report.
Ejecutamos y esto es lo que obtenemos (yo con cara de aiba-la-ostia-patxi) :

C贸mo v茅is, hay errores y warnings a "tutipl茅n" y eso que no hemos escrito ni una sola l铆nea de c贸digo.

Examinamos todos los archivos de la soluci贸n activando la opci贸n adecuada:

Al insertar un report en nuestra soluci贸n / proyecto, adem谩s del archivo *.rpt, se genera autom谩ticamente un archivo *.vb (*.cs en caso de C#)
Abrimos ese archivo en la vista de c贸digo y observamos esto:


(Haz click para agrandar)

Se puede observar que hay multitud de objetos que no est谩n referenciados y que el VS2010 no entiende y por ende genera todos los errores que vimos antes.

Soluciones quiero!!!

La soluci贸n en este caso es "simple". Basta con cambiar el target del .NET Frameword de la aplicaci贸n y establecer el .NET Framework 4:


(haz click para agrandar)

Mencionar que esta versi贸n de Crystal Reports para VS2010 tambien se puede usar si el target es .NET Framework 3.5, pero no con las versiones "Client Profile" ya bien sean Client Profile de .NET Framework 3.5 o .NET Framework 4

Pues bien, al cambiar de target a .NET Framework 4 desaparecen todos los errores y warnings y la aplicaci贸n compila sin errores:


(Haz click para ampliar)

Bien, a priori parece que todo est谩 solucionado, pero como siempre hay un "pero", y 茅ste no es tan obvio con el problema anterior.

El tema es cuando a帽adimos a nuestra soluci贸n un proyecto de instalaci贸n.
Como sabr茅is los proyectos de instalaci贸n generan un *.msi que instala todos los "requisitos previos".
De esta forma, nos aseguramos que nuestra aplicaci贸n se va a ejecutar correctamente en un PC distinto al PC de desarrollo.

Pues bien, a帽adimos un nuevo proyecto de instalaci贸n como lo haciamos en las versiones anteriores de Visual Studio:


(Haz click para agrandar)

En los requisitos previos de la instalaci贸n marcamos el .NET Framework, el Windows Installer 3.1 y como utilizamos Crystal Reports pues el "SAP Crystal Reports for .NET Framework 4.0"

En mi caso particular, especifico que los requisitos previos estan en la misma ubicaci贸n que la aplicaci贸n. De esta forma una vez "compilado todo el proyecto", dispondremos de una carpeta donde est谩n todos los archivos necesarios. Esta carpeta se quema en un CD/DVD y se entrega al cliente/amigo/cu帽ado/Se帽or X:


(Haz click para agrandar)

Vale, vamos a generar la instalaci贸n y ocurre esto (驴 Lol ?):


(Haz click para agrandar)

Como v茅is, hay dos archivos que el compilador no puede encontrar y por lo tanto, no puede generar la instalaci贸n.

Soluciones quiero!!!

Por raro que parezca, la instalaci贸n de Crystal Reports "no instala" los runtimes en la carpeta que usa Visual Studio para almacenar los "requisitos previos".

Esta carpeta, conocida como BootStrapper est谩 en聽 la siguiente ubicaci贸n:


(Haz click para agrandar)

Si que existe una carpeta llamada Crystal Reports for .NET Framework 4.0 pero no estan los runtimes:


(Haz click para agrandar)

La soluci贸n es copiar los runtimes de Crystal Reports (tanto de 32 como de 64 bits) aqu铆 dentro:


(Haz click para agrandar)

Con esta "sencilla"聽operaci贸n la compilaci贸n del proyecto de instalaci贸n ya no genera error. Remarco lo de "sencilla" porque casi me vuelvo loco para averiguar por que diantres pasaba esto.聽


Bonus Track

Ocurre una cosa parecida si indicamos como requisito previo el .NET Framework 3.5 SP1
Al generar la soluci贸n de instalaci贸n se producen un monton de errores indicando que tal o cual archivo no ha podido ser encontrado y por lo tanto la instalaci贸n no se genera correctamente.

Si mirarmos en la carpeta del bootstrapper del DotNetFX35SP1 vemos tambi茅n est谩 vacia:


(Haz click para agrandar)

y lo mismo en la subcarpeta del idioma espa帽ol:


(Haz click para agrandar)

Soluciones quiero!!!

Pues hay que bajarse dos cosas:

1) el .NET Framework 3.5 SP1 y copiarlo en la carpeta DotNetFX35SP1:


(Haz click para agrandar)

Adem谩s hay que modificar el archivo product.xml de la siguiente forma:

hay que a帽adir estas 3 l铆neas:

<PackageFile Name="TOOLSclwireg.exe"/>
<PackageFile Name="TOOLSclwireg_x64.exe"/>
<PackageFile Name="TOOLSclwireg_ia64.exe"/>聽

y ponerlas justo debajo de聽

<PackageFiles CopyAllPackageFiles="IfNotHomeSite">

adem谩s hay que cambiar la PublicKey de

<PackageFile Name="dotNetFX30XPSEPSC-x86-en-US.exe"

y de聽

<PackageFile Name="dotNetFX30XPSEPSC-x86-en-US.exe"

Hay que establecer para los dos archivos anteriores la siguiente PublicKey:

PublicKey="3082010A0282010100A2DB0A8DCFC2C1499BCDAA3
A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5
D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B1468
80DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE
361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A288
5758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8
073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94
F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A2
16B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B
28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B7
07CEE554D77D2085576810203010001 " />

 

2) Tambi茅n hay que bajarse "los textos" del .NET Framework 3.5 SP1 en espa帽ol

Dentro de la carpeta es hay que crear un carpeta llamada DotNetFX35:


(Haz click para agrandar)

y dentro de esa carpeta hay que crear estas dos carpetas


(Haz click para agrandar)

y dentro de cada una de esas dos carpetas copiar los "textos" en espa帽ol que nos acabamos de bajar

 

Bien, aprovecho para comentar que VS 2010 no me acaba de gustar, me da la sensaci贸n que el entorno es m谩s lento que el VS 2008, bueno, no es una sensaci贸n, el mismo proyecto (sobre unos 130 archivos entre clases, formularios y dem谩s) tarda m谩s en cargar en VS 2010 que en VS 2008.
Adem谩s la fuente que han escogido para el IDE ("consolas") me parece horrosa a m谩s no poder, la colocaci贸n de las distintas ventanas a煤n no me acaba de convencer, el nuevo sistema de ayuda en modo off-line tarda en inicializarse.

En f铆n que seguir茅 trasteando con 茅l a ver que nos depara el futuro 馃檪

Links 煤tiles:

Crystal Reports (versi贸n 13 con SP1) para Visual Studio 2010

.NET Framework 3.5 Service Pack 1 (paquete completo)
Paquete de idioma (Espa帽ol) de Microsoft .NET Framework 3.5 SP1
Hilo de la MSDN para sobre los "errores" del tema del .NET Framework 3.5 SP1聽

La informaci贸n interesante sobre la PublicToken y la modificaci贸n del product.xml est谩 en la secci贸n 2.3.1.1 de este documento .Aunque en el t铆tulo ponga Visual Studio 2008, lo que se explica es v谩lido para el VS 2010, ya que se trata sobre el Service Pack 1 del .NET Framework 3.5 : http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/VS2008SP1Readme.htm

 

Tutoriales relacionados:
.NET Tutorial 47. Visual Studio 2010, Crystal Reports y RecordSelectionFormula

.NET Tutorial 55. Crystal Reports, aplicaciones x86 y Windows de 64 bits

Saludos.
mov eax,ollydbg; Int 13h聽

 


Ollydbg ProSignature