嵌入dll资源

发布于 2024-10-31 21:38:56 字数 207 浏览 2 评论 0 原文

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

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

Is there a clean way of accessing embedded resources (css/js/images etc) inside a dll.

For example, from an aspx page, can something similar to the below be used?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

肩上的翅膀 2024-11-07 21:38:56

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

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

即可获取资源服务器端的 url 如下所示:

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

然后将其呈现在页面上

I would suggest to take a look at WebResource.axd and the way how you can access embedded resources, like for example here:

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

you can get the resource url on server side like this:

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

and then render it on page

梦在深巷 2024-11-07 21:38:56

谢谢,我不久前看过 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 位于名为 Styles 的文件夹中在 dll 中,因此 Styles.filename.css)


重要说明

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

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

Thanks I had a look at WebResource a while back but didn't fully understand how it worked. Just had another look & I've now got a tidy little solution.

For those interested, I have a class in my dll called Resource with a static method as follows

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

After using the register directive in my master page (or web.config) I can now do the following

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

(reset.css resides within a folder called Styles in the dll, hence Styles.filename.css)


Important Notes:

I discovered that the first argument accepted by GetWebResourceUrl must be of a class within the dll project not a class within consuming website.

I also had tremendous difficulty determining the correct fully qualified name to use for the resource in the AssemblyInfo.cs file. I discovered that my assembly name was not the same as my default namespace. The default namespace should be used to form the 'resourceName' argument for GetWebResourceUrl.

南风几经秋 2024-11-07 21:38:56

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

然后这样称呼它:

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

Create a Resource Provider Aspx Page witch will check for a resource name in query string. then retrieves resource from dll and binary writes the resource in output.

then call it like this :

<script type="text/javascript" 
    src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文