我正在尝试从Resources文件夹动态加载图像,但由于某种原因,GetManifestResourceStream
返回null。这就是我写的:
System.Reflection.Assembly asm;
asm = System.Reflection.Assembly.GetExecutingAssembly();
Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("MyProject.Properties.Resources.Image.png"));
我已经尝试了我在这里找到的每一种方法,但它不起作用。路径是正确的,文件在那里。我需要动态执行此操作,因为根据用户权限,将加载不同的程序集。所以基本上我需要两件事:
如何做到这一点?
答案 0 :(得分:1)
这通常意味着资源名称不正确。在ildasm中加载程序集,查看“.mresources”部分的清单并找到要加载的部分。
如果没有,对GetExecutingAssembly的调用将返回包含当前正在执行的代码的程序集,该程序集可能与包含该资源的DLL不同。请使用GetCallingAssembly从单独的DLL加载它。
回答上述问题:
- 获取包含所有已加载程序集的列表
醇>
使用AppDomain.GetAssemblies方法,例如:
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
- 将与加载的装配相对应的图像加载到位图
中 醇>
使用GetManifestResourceStream迭代查找资源的程序集。