Truly
写精彩代码 品暇逸人生
对于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 />");
    }
}


posted on 2007-07-10 15:14  Truly  阅读(3599)  评论(1编辑  收藏  举报