Desensamblando un proyecto Silverlight 2.0 Beta 1
Estoy investigando y jugando un poco con Silverlight 2.0 y se me ha ocurrido desensamblar una aplicación Silverlight 2.0 Beta 1 desde un navegador Web para trastear un poco y ver que como se me daba, y la verdad es que aunque el ejemplo que os traigo es básico, el resultado es el esperado.
Para esta demostración, he iniciado por un lado un nuevo proyecto de nombre SilverlightAppDemo1 con Silverlight 2.0 Beta 1 y he agregado un objeto StackPanel dentro del código XAML. Dentro de este objeto he añadido un objeto hijo de tipo Border, y al mismo tiempo y dentro de este último, un objeto Button.
El código XAML es el siguiente:
<UserControl x:Class=«SilverlightAppDemo1.Page» |
He compilado y he ejecutado la aplicación de demostración y he visto que se ejecuta correctamente.
Si hago clic con el botón derecho del ratón, solo puedo acceder a la opción de Configuración de Silverlight, asi que me he puesto a ver el código fuente de esta página de inicio y he visto en la parte final el siguiente código:
… null, null, $get(«Xaml1_parent»)); |
Así que me he ido directamente a por el fichero SilverlightAppDemo1.xap escibiendo en el navegador Web la dirección http://servidor/aplicación/ClientBin/nombre.xap y lo he guardado en disco.
El fichero xap tiene por objetivo reunir los recursos estáticos de la aplicación (recursos, ensamblados,…).
He abierto el fichero con un editor de hexadecimal y rápidamente he visto que se trataba por la información de cabecera en un fichero .zip.
He renombrado el archivo a .zip y he descomprimido sus elementos:
AppManifest.xaml
SilverlightAppDemo1.dll
System.Windows.Controls.dll
System.Windows.Controls.Extended.dll
Con ayuda de .NET Reflector he accedido al ensamblado SilverlightAppDemo1.dll que es el que realmente me interesa, y he podido ver en recursos los dos archivos que agrega al ensamblado:
page.xaml
app.xaml
He guardado en disco page.xaml y he leído su contenido:
<UserControl x:Class=«SilverlightAppDemo1.Page» |
Finalmente y aparte de examinar el código con .NET Reflector, he querido agregar algo de lógica en la página Web inicial:
Aquí va el código XAML final:
<UserControl x:Class=«SilverlightAppDemo1.Page» Click=«btnAceptar_Click» /> |
Una vez agregado el código XAML, pasaremos a escribir la lógica del código de este formulario y que tiene relación directa con el evento btnAceptar_Click.
El código es el siguiente:
Partial Public Class Page ByVal e As System.Windows.RoutedEventArgs) |
Ejecutaremos nuestra aplicación y repetiremos los mismos pasos con .NET Reflector que hemos hecho anteriormente.
Observaremos que además del código XAML, somos capaces de obtener el código correspondiente con la lógica de programación del formulario y que está relacionado en concreto con el código del control Button:
Private Sub btnAceptar_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) |
Internamente, Silverlight traduce los caracteres especiales a caracteres HTML para que no haya problemas en la presentación de ñ, tildes, y otros caracteres especiales.
Recordar únicamente, que un fichero de extensión .xap contiene un manifiesto de la aplicación (AppManifest.xaml), y los ficheros dll necesarios para ejecutar la aplicación. La dll principal es la de la aplicación (SilverlightAppDemo1.dll en mi caso) y las librerías o ensamblados asociados o dependientes de la aplicación (System.Windows.Controls.dll y System.Windows.Controls.Extended.dll).
Examinando el manifiesto de la aplicación, observaremos que este contiene la definición de la aplicación y sus partes o ensamblados necesarios.
<Deployment xmlns=«http://schemas.microsoft.com/client/2007/deployment» xmlns:x=«http://schemas.microsoft.com/winfx/2006/xaml» EntryPointAssembly=«SilverlightAppDemo1» EntryPointType=«SilverlightAppDemo1.App» RuntimeVersion=«2.0.30226.2»> Source=«System.Windows.Controls.Extended.dll» /> |
No es mucho pero es una curisodad que espero ayude a entender como despliega Silverlight 2.0 Beta 1 una aplicación y que partes tiene o puede tener un ensamblado dentro así como el contenido real del fichero .xap.
6 Responsesso far
🙂
Jorge, ¿tu duermes?
(Es broma). Chulo el post… 😀
Jorge, «de mayor» (ya tengo 37 tacos) quiero ser como tú.
Muchas Gracias por compartir tu sabiduría.
PingBack desde dvilchez.net » Blog Archive » Algunos links
Hola Jorge, supongo que debería incluirlo aquí aunque la verdad no sé si tendrá que ver mucho pero ahí va.
Hace unos días instalé el Visual Studio 2008 Pro tras desinstalar la versión 2005 del mismo producto.
Cual es mi sorpresa actualmente que me ocurren los siguientes errores:
1. Cuando hago una actualización de la v.2005 a la 2008 de mis proyectos para leerlos con vs2008, la pantalla no me sale completa, sino que sólo salen los botones, el resto de comentarios y demás sale en el color de fondo pero sin contenido es decir, no sé realmente qué pasos estoy siguiendo.
2. En cuanto a los controles, cuando los arrastro al form no puedo seguir las guías porque no aparecen y a veces cuando arrastro no sé donde está situado hasta que hago un mouseup (suelto el botón del ratón).
3. También ocurre algo similar en las propiedades de los controles, por ej. cuando voy a cambiar el color de fondo o el de la fuente me salen los colores pero no el texto asociado en el panel de herramientas.
Si sigo encontrando algunos problemas los notifico por si alguien sabe de dicho error o es fruto de haber actualizado algo.
Saludos.
Francisco J.
Una informacion valiosa dificil de encontrar cuando la necesitas.
Gracias Jorge.
PD: ¿De donde sacas tanta paciencia para averiguar estas cosas?
hola mira tengo que hacer en silverlight la funcion de descomprimir un archivo. zip
es decir hago que cargue y lea el archivo bueno lo gaurda pero tengo ue hacer que al guardarlo lo descomprima tambien como le hago podrian ayudarme gracias