对于Asp.Net 2.0中脚本资源的研究(2)

对于Asp.Net 2.0中脚本资源的研究(2)
Author: Truly

上篇文章中我们主要介绍了.net 2.0 中的资源文件,并以WebForms.js为例做了重点分析,有朋友问我如何获取所有的资源文件,方法有很多中。

可以使用我们熟悉的Reflector导出所有资源文件(利用Reflector.FileDisassembler插件),也可以使用下面的方法:

遍历所有资源:

Attribute[] abc  =  System.Web.UI.WebResourceAttribute.GetCustomAttributes(Assembly.GetAssembly( typeof (System.Web.UI.Page))) ;

int  i  =   0 ;
foreach  (Attribute a  in  abc)
{
    
if  (a.TypeId.ToString()  ==   " System.Web.UI.WebResourceAttribute " )
    {
        i
++ ;
        Response.Write(((System.Web.UI.WebResourceAttribute)(a)).WebResource 
+   " \r\n " );
    }
}
Response.Write(
" <br>总数量: " +  i);

导出所有的资源文件:

Assembly assm  =  Assembly.GetAssembly( typeof (System.Web.UI.Page));
Attribute[] abc 
=  System.Web.UI.WebResourceAttribute.GetCustomAttributes(assm);

Stream stream;
System.IO.FileStream sr;
byte [] bt;
string  name  =   "" ;
WebResourceAttribute wra;

foreach  (Attribute a  in  abc)
{
    
if  (a.TypeId.ToString()  ==   " System.Web.UI.WebResourceAttribute " )
    {
        wra 
=  (WebResourceAttribute)a;
        name 
=  wra.WebResource;

        stream 
=  assm.GetManifestResourceStream(name);
        
if  (stream  ==   null )
            
continue ;
        bt 
=   new   byte [stream.Length];
        stream.Read(bt, 
0 , ( int )stream.Length);
        sr 
=   new  FileStream( @" f:\resource\ "   +  name, FileMode.Create);

        sr.Write(bt, 
0 , bt.Length);
        sr.Close();
        stream.Close();

        Response.Write(a.TypeId.ToString() 
+   " <br /> " );
    }
}


你可能感兴趣的:(asp.net)