C# 访问活动程序集资源

C# 访问活动程序集资源,c#,resources,.net-assembly,C#,Resources,.net Assembly,我试图从Resources文件夹动态加载图像,但由于某些原因,GetManifestResourceStream返回null。这是我写的: System.Reflection.Assembly asm; asm = System.Reflection.Assembly.GetExecutingAssembly(); Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("MyProject.Properties.Resources.Image

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

System.Reflection.Assembly asm;
asm = System.Reflection.Assembly.GetExecutingAssembly();
Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("MyProject.Properties.Resources.Image.png"));
我已经尝试了这里找到的每一种方法,但都不管用。路径正确,文件在那里。我需要动态执行此操作,因为根据用户权限,将加载不同的程序集。所以基本上我需要两件事:

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

  • 如何做到这一点?

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

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

    要回答上述问题,请执行以下操作:

  • 获取包含已加载的所有程序集的列表
  • 使用以下方法,例如:

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

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

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

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

    要回答上述问题,请执行以下操作:

  • 获取包含已加载的所有程序集的列表
  • 使用以下方法,例如:

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

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

    我已编辑了您的标题。请参阅“”,其中一致意见是“不,它们不应该”。如果将文件的生成操作属性设置为Embedded Resource,则两个版本(GetExecutionGassembly和GetCallingAssembly)都可以工作。我已编辑了您的标题。请参阅“”,其中一致意见是“不,它们不应该”。如果将文件的生成操作属性设置为Embedded Resource,则两个版本(GetExecutionGassembly和GetCallingAssembly)都可以工作。根据ildasm,资源名称是正确的。可能是其他原因吗?根据ildasm,资源名称是正确的。会是别的吗?