2012-02-15 2 views
0

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

image.png HTML "image.png" 

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

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

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

res://Assembly.dll/image.png 

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

Идеи?

ответ

1

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

Add assembly to global assembly cache.

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

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

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

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

Смежные вопросы