如何偷窥他人的Silverlight源代码

学习一项新技术,特别是编程技术,最好最直接的办法是学习高手编写的代码。如何阅读代码可以参考Code Reading这本书,此书荣获第14Technical 效能大奖。几年前我们能够免费查看的代码大部分都归功于开放源代码组织,MS平台的开放代码量相对要少很多。最近这几年微软似乎意识到开源的好处,开放许多框架的源代码,还专门建立了微软的开源项目网站http://www.codeplex.com/。另外得益于博客的迅速普及,许多专家针对目前的热点技术在自己的博客中都撰写了大量的高水平的文章,这些文章大多具有短小精悍,深入浅出的特点,而且一般都会带有源代码Silverlight是微软力推的互联网RIA解决方案,Silverlight 2.0 Beta 1支持.NET托管语言,而.NET程序集是可以反编译的,这就为我们查看Silverlight应用程序源代码提供了机会。在这里我会提供这样的一种方法

首先我们需要明白,Silverlight应用程序在部署的时候,会将应用程序用到的全部资源(包括XAMLCode-Behind文件,资源文件)全部打包到一个.XAP(虽然后缀为XAP,但是它实际上是一个zip文件文件中,因此只要我们下载了这个文件也就获得了程序的源代码(当然源代码被混淆了的话,阅读起来会比较费劲)。

首先下载并安装一个称为weblinkviewer的小软件,这是一个IE插件,使用它我们就可以查看当前网页上的链接资源。

比如我们想查看podcastPlayer2链接地址http://www.ufrate.it/testvari/Default.html)的源代码,我们只需要在浏览器的边缘单击右键在弹出菜单中选择“中国站长天空网页链接查看器” (注意不要在网页的内容区域右击)。在弹出的网页中点击全部按钮,是不是出现了xap资源,单击“点击展开”按钮就会显示xap资源的地址,

将它下载下来之后,将其扩展名改为zip并解压。里面会有许多dll文件,其中一些是微软的程序集,我们不必关心它们,这里我们只需要关心podcastPlayer2.dll就可以了。

最后,我们请出超级工具Lutz Roeder’s .NET Reflector,打开podcastPlayer2.dll,在podcastPlayer2上右击选择disassemble即可。源代码如下图所示:

 

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...