Доступ к ресурсам в зарегистрированной .NET DLL через протокол res - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть .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

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

Идеи?

1 Ответ

1 голос
/ 16 февраля 2012

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

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

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

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

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

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

...