我试图从Resources文件夹动态加载图像,但是由于某种原因GetManifestResourceStream返回null。 这是我写的:

System.Reflection.Assembly asm;
asm = System.Reflection.Assembly.GetExecutingAssembly();
Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("MyProject.Properties.Resources.Image.png"));

我已经尝试了在这里找到的每种方法,但是没有用。 路径正确,文件在那里。 我需要动态地执行此操作,因为根据用户权限,将加载不同的程序集。 所以基本上我需要两件事:

  1. 获取包含所有已加载程序集的列表
  2. 将与已加载的程序集对应的图像加载到位图中

如何才能做到这一点?

#1楼 票数:1 已采纳

这通常意味着资源名称不正确。 在ildasm中加载程序集,查看“ .mresources”部分的清单,然后找到要加载的程序集。

如果不是,则对GetExecutingAssembly的调用将返回包含当前正在执行的代码的程序集,该程序集可能与包含该资源的DLL不同。 使用GetCallingAssembly可以从单独的DLL加载它。

要回答以上问题:

  1. 获取包含所有已加载程序集的列表

使用AppDomain.GetAssemblies方法,例如:

Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
  1. 将与已加载的程序集对应的图像加载到位图中

使用GetManifestResourceStream遍历程序集以查找资源。

  ask by Rocshy translate from so

未解决问题?本站智能推荐:

1回复

从已加载的程序集中访问图像资源

我的程序有一个简单的插件体系结构,该体系结构使用接口返回图标的ImageSource。 我希望每个插件都能向程序集中添加图标/图像资源,并从其实现的类中返回它。 我遇到的问题是,当我使用上一个技巧时,要实例化ImageSourceConverter并将其传递给pack uri,它不适用于已
1回复

如何从包含其程序集和任何程序集路径的Uri加载资源?

我想仅使用其uri从任何程序集(同一应用程序)加载任何资源 。 两个程序集都是同一应用程序的一部分。 因为我希望能够从任何程序集中加载,所以不能使用在通用Dll中未定义的“ App”或“ Application”。 我认为部分或答案正在使用: System.Reflection.Ass
2回复

使用AssemblyBuilder构建资源程序集

场景:我想创建作为资源程序集的附属程序集。 该程序集仅在其中编译资源(ResourceWriter)。 目标是在VS之外创建资源程序集,并将它们添加到应用程序中,并将其添加到我的C#应用​​程序中 Atm我正在使用AssemblyBuilder来创建程序集。 它有效,但没有关于存储的程
1回复

在单独的程序集中的资源在不同的构建配置中不可见

Web应用程序中的本地化资源存在问题。 我需要从不同的程序集(WebSite,BLL等)中使用它们,因此我决定将它们移至单独的库中。 我正在使用三种不同的构建配置(Debug,Release和基于Release的QA)。 当我在本地运行应用程序时,一切都很好(与配置无关)。 问题是当我在
1回复

从引用项目访问资源

我有以下解决方案结构: 模型 用户界面 资源资源 文件 UI引用了Model,因此Model无法引用UI。 在Model项目中是否可以从UI访问资源?
2回复

如何将文件g.resources插入到程序集中

我需要修改一个程序集来更改一个资源。 我已经提取了资源并对其进行了修改,但是现在我找不到将其再次嵌入到程序集中的方法。 我已经尝试过ildasm,但似乎它想要一个.res资源文件,而我只有一个xxx.g.resources文件。 有任何想法吗? 谢谢
1回复

未加载来自另一个程序集的XAML中的图像(不显示)

我不明白,来自同一程序集的图像按预期显示。 另一个程序集(引用)中的图像似乎未加载(不显示)。 部分代码: 我确实尝试在App.OnStartup中添加下一行,但没有成功: 这发生在我的应用程序MainWindow中,定义为“ Resource”的图像上(就像来自同一程序集的图像一
2回复

逐行读取资源txt

我的桌面上有一个txt文件,包含以下代码: 我最近才得知我可以将txt添加为资源文件(因为它将永远不会被更改)。 但是,我无法使程序像上面一样逐行读取该file.txt作为资源。 我已经尝试了Assembly.GetExecutingAssembly().GetManifestResou