Встроенные ресурсы DLL - PullRequest
       8

Встроенные ресурсы DLL

6 голосов
/ 12 апреля 2011

Существует ли чистый способ доступа к встроенным ресурсам (css / js / images и т. Д.) Внутри dll.

Например, можно ли использовать что-то похожее на приведенное ниже со страницы aspx?

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

Ответы [ 3 ]

4 голосов
/ 12 апреля 2011

Я бы посоветовал взглянуть на WebResource.axd и узнать, как вы можете получить доступ к встроенным ресурсам, например, здесь:

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

Вы можете получить URL ресурса на стороне сервера следующим образом:

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

, а затем отобразить его на странице

3 голосов
/ 13 апреля 2011

Спасибо. Я недавно посмотрел WebResource, но не до конца понял, как он работает.Только что выглядело по-другому, и теперь у меня есть небольшое решение.

Для тех, кто заинтересован, у меня в dll есть класс Resource со статическим методом следующим образом

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

Послеиспользуя директиву register на моей главной странице (или web.config), теперь я могу сделать следующее

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

(reset.css находится в папке с именем Styles в dll, поэтому Styles.filename.css)


Важные замечания :

Я обнаружил, что первый аргумент, принятый GetWebResourceUrl, должен иметь класс в проекте dll , а не aкласс внутри потребляющего веб-сайта.

У меня также были огромные трудности с определением правильного полного имени для ресурса в файле AssemblyInfo.cs.Я обнаружил, что мое имя сборки не совпадает с моим пространством имен по умолчанию.Пространство имен по умолчанию должно использоваться для формирования аргумента 'resourceName' для GetWebResourceUrl.

0 голосов
/ 12 апреля 2011

Создайте страницу Aspx провайдера ресурсов, чтобы проверить имя ресурса в строке запроса. затем извлекает ресурс из dll, а двоичный файл записывает ресурс в вывод.

тогда назовите это так:

<script type="text/javascript" 
    src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...