嵌入式DLL资源

时间:2011-04-12 09:45:18

标签: javascript asp.net css dll

是否有一种干净的方式来访问dll中的嵌入式资源(css / js / images等)。

例如,从aspx页面可以使用类似下面的内容吗?

<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>

3 个答案:

答案 0 :(得分:4)

我建议您查看 WebResource.axd 以及访问嵌入资源的方式,例如:

http://weblogs.asp.net/jeff/archive/2005/07/18/419842.aspx

您可以在服务器端获取资源网址,如下所示:

Page.ClientScript.GetWebResourceUrl(typeof(MyNameSpaces.MyControl), "MyNameSpaces.Resources.MyImage.gif")

然后在页面

上呈现它

答案 1 :(得分:3)

谢谢我前一段时间看过WebResource但是并没有完全理解它是如何工作的。刚看了一眼&amp;我现在有一个整洁的小解决方案。

对于那些感兴趣的人,我在我的dll中有一个名为Resource的类,其静态方法如下

public static string Get(Page p, string file) {
    return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Resources." + file);
}

在我的母版页(或web.config)中使用register指令后,我现在可以执行以下操作

<link href="<%= Resource.Get(this.Page, "Styles.reset.css") %>" rel="stylesheet" type="text/css" />

(reset.css位于dll中名为Styles的文件夹中,因此Styles.filename.css)


重要说明

我发现GetWebResourceUrl接受的第一个参数必须是dll项目中的一个类而不是消费网站中的一个类。

我在确定要用于AssemblyInfo.cs文件中的资源的正确完全限定名称时遇到了极大的困难。我发现我的程序集名称与我的默认名称空间不同。应使用默认命名空间来形成GetWebResourceUrl的“resourceName”参数。

答案 2 :(得分:0)

创建资源提供程序Aspx Page将检查查询字符串中的资源名称。然后从dll中检索资源,二进制文件在输出中写入资源。

然后这样称呼:

<script type="text/javascript" 
    src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>