Доступ к ресурсам в зарегистрированной .NET DLL через протокол res

У меня есть .NET DLL, которую я регистрирую с помощью regasm.exe в качестве вспомогательного объекта браузера. Я встроил несколько ресурсов Win32 в DLL с помощью файлов .res и переключателя / win32 на csc.exe.

image.png   HTML    "image.png"

Я могу получить доступ к ресурсам с помощью протокол res при условии, что я включаю абсолютный путь к DLL.

res://C:\Path\To\My\Dll\Assembly.dll/image.png

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

res://Assembly.dll/image.png

Но это приводит к ошибке, потому что браузер не может найти ресурс.

Идеи?


person fixedpoint    schedule 15.02.2012    source источник


Ответы (1)


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

Добавить сборку в глобальный кеш сборок.

Это некрасиво, и вы также должны иметь в виду, что более новая сборка DLL будет отличаться от версии в кеше. Так что, по сути, это был бы еще один дополнительный шаг, который просто вернул бы нас к принятию необходимости идти полным путем.

Во-вторых, еще одно решение, которое, как мне кажется, работает, - это разместить DLL в том же каталоге, что и утилита VS или другие ресурсы, которые вы пытаетесь использовать. Это может быть применимо к множеству разных вещей, которые можно захотеть сделать, но для этого потребуется вручную перемещать файлы.

В-третьих, вы создаете несколько настраиваемых переменных среды, которые представляют желаемый вами путь. Поэтому вместо того, чтобы в будущем вводить полный путь, вы просто вводите свою переменную.

Третий вариант - мой любимый, и я использую его для множества разных задач, которые мне нужно выполнить из командной строки.

person CSmanic    schedule 16.02.2012