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

C# 无法从动态加载的程序集加载资源,c#,wpf,C#,Wpf,我有一个主应用程序,它从“./plugins”目录加载插件 插件是包含UserControls的库程序集,它使用一些图像(资源) 问题是在主应用程序中使用时找不到图像 XamlParseException -> Cannot locate resource 'X.png' 我尝试将资源构建为“资源”、“嵌入式资源”和“内容”,但例外情况仍然存在 我尝试将图像的路径指定为 /X.png 和(两者都不起作用) pack://application:,,,/;X.png 我应该如何构建图像

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

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

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

XamlParseException -> Cannot locate resource 'X.png'
我尝试将资源构建为“资源”、“嵌入式资源”和“内容”,但例外情况仍然存在

我尝试将图像的路径指定为

/X.png
和(两者都不起作用)

pack://application:,,,/;X.png
我应该如何构建图像资源,使它们在作为插件加载程序集后仍然可用?

您看过吗?
程序集将是您通过编程方式加载的程序集

还要注意并使资源可访问(很像
被声明为
公共
),否则不能从程序集外部引用它


关于它的更多信息。

您可以使用
Assembly.GetManifestResourceNames
获取所有资源及其名称的列表,这将让您知道使用什么名称检索资源。

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

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

在此处找到我的问题的答案:

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

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

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

我尝试了这个方法,但是图像没有列在那里,只有“WpfApp.g.resource”和“WpfApp.Properties.Resources.Resources”。没有办法将图像资源设置为公共的,或者我遗漏了什么?不,你没有遗漏什么。我的意思是声明它是可访问的,就好像一个
是公开的。对于图像,我在上面添加了一个编辑来解释如何进行编辑,但我想这不再是您的问题,因为您已经自己解决了这个问题:)这两个语法之间有区别吗?区别在于您的URI类型是相对的还是绝对的。有关更多信息,请参阅MSDN
"/«YourAssemblyName»;component/«YourPath»/«YourImage.png»"