对于Asp.Net 2.0中脚本资源的研究(2)
Author: Truly
在上篇文章中我们主要介绍了.net 2.0 中的资源文件,并以WebForms.js为例做了重点分析,有朋友问我如何获取所有的资源文件,方法有很多中。
可以使用我们熟悉的Reflector导出所有资源文件(利用Reflector.FileDisassembler插件),也可以使用下面的方法:
遍历所有资源:
导出所有的资源文件:
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);
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 />");
}
}
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 />");
}
}