从客户端程序集加载资源

本文关键字:资源 加载 程序集 客户端 | 更新日期: 2023-09-27 17:54:23

我目前正在创建一个游戏引擎,需要从引用我的库的客户端程序集中的资源加载图像。我正在使用这个代码。

public static Image LoadImageFromResource(string name){
    string asmname = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location).Replace('''', '.').Replace('/', '.');
    MessageBox.Show(asmname);
    MessageBox.Show(asmname + "." + name.Replace('''', '.').Replace('/', '.'));
/*164*/  return (Image)new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream(asmname + "." + name.Replace('''', '.').Replace('/', '.')));
}

我从客户端测试GECS_TEST.exe

调用它
/*11*/ Image img = Game.LoadImageFromResource("mario_left.png");

这些是MessageBox

的输出

GECS_TEST

GECS_TEST.mario_left.png

我得到了这个异常

System.ArgumentException: Value of 'null' is not valid for 'stream'.
   at System.Drawing.Bitmap..ctor(Stream stream)
   at GECS.Core.Game.LoadImageFromResource(String name) in C:'..'Game.cs:line 164
   at GECS_TEST.Test.Main(String[] args) in c:'..'Test.cs:line 11

谢谢

从客户端程序集加载资源

使用Assembly.GetCallingAssembly()代替Assembly.GetEntryAssembly()。