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