无法从动态加载的程序集加载资源

时间:2015-04-16 15:51:46

标签: c# wpf

我有一个主应用程序,它从“./plugins”目录加载插件。

插件是包含UserControls的库程序集,它使用一些图像(资源)。

问题是在主应用程序中使用时找不到图像。

XamlParseException -> Cannot locate resource 'X.png'

我尝试将资源构建为“资源”,“嵌入式资源”和“内容”,但异常仍然存在。

我尝试将图像路径指定为

/X.png

以及(也不起作用)

pack://application:,,,/<PluginAssemblyName>;X.png

我应该如何构建图像资源,以便即使在将程序集作为插件加载后也可用?

4 个答案:

答案 0 :(得分:1)

你看过this example了吗? Assembly将是您以编程方式加载的那个。

还要注意使资源可访问(很像class声明为public),否则无法从程序集外部引用它。

有关MSDN的更多信息。

答案 1 :(得分:1)

设置为资源并尝试使用以下包URI语法。对于其他程序集中的资源,您应该使用/ AssemblyName;组件语法

"pack://application:,,,/AssemblyName;component/x.png"

答案 2 :(得分:0)

您可以使用Assembly.GetManifestResourceNames获取所有资源及其名称的列表,以便您了解用于检索资源的名称。

答案 3 :(得分:0)

在这里找到我的问题的答案: https://stackoverflow.com/a/2416464/2649340

在插件程序集中,我使用此路径引用图像资源

"/«YourAssemblyName»;component/«YourPath»/«YourImage.png»"

即使这个插件加载到另一个程序集中,它也能正确加载。