嵌入式dll资源

Embedded dll resources

本文关键字:资源 dll 嵌入式      更新时间:2023-09-26

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

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

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

我建议看一下WebResource。axd以及如何访问嵌入式资源,例如:

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

你可以像这样获得服务器端的资源url:

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

,然后渲染到页面

谢谢,我之前看了一下WebResource,但没有完全理解它是如何工作的。只是再看了一眼& &;我现在有了一个整洁的小解决方案。

对于那些感兴趣的人,我在我的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'参数。

创建一个资源提供者Aspx页面,它将检查查询字符串中的资源名称。然后从DLL中检索资源,并在输出中二进制写入资源。

然后像这样调用它:

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