通过res协议访问注册的.NET DLL中的资源

本文关键字:NET DLL 资源 注册 res 协议 访问 通过 | 更新日期: 2023-09-27 18:24:45

我有一个.NET DLL,我用regasm.exe将其注册为浏览器帮助程序对象。我使用.res文件和/Win32切换到csc.exe.在DLL中嵌入了几个Win32资源

image.png   HTML    "image.png"

我可以使用res协议访问资源,只要我包含DLL的绝对路径

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

这很不幸。我宁愿只引用程序集名称,就像我在许多其他示例中看到的那样:

res://Assembly.dll/image.png

但这会导致一个错误,因为浏览器找不到资源。

想法?

通过res协议访问注册的.NET DLL中的资源

我认为有几件事可以做。首先,如果您不想被迫使用完整路径,我认为您的程序集需要成为全局程序集缓存的一部分。

将程序集添加到全局程序集缓存。

它并不漂亮,您还必须记住,DLL的新版本将与缓存中的版本不同。因此,这本质上是另一个额外的步骤,只会让我们重新接受必须走完全程。

其次,我认为另一个可行的解决方案是将DLL与VS实用程序或您试图使用的其他资源放在同一目录中。这可能适用于人们可能想要做的多种不同的事情,但需要手动移动文件。

第三,您可以创建一些自定义环境变量,这些变量代表您想要的路径。因此,您不必在将来键入完整的路径,只需键入变量即可。

第三个选项是我最喜欢的,它用于我需要从命令行完成的多个不同的事情。