C# AlphaImage.CreateFromResource()中的NullReferenceException

C# AlphaImage.CreateFromResource()中的NullReferenceException,c#,reflection,compact-framework,C#,Reflection,Compact Framework,我正在使用.NET Compact Framework的AlphaMobileControls库。我正在使用AlphaImage.CreateFromResource(imageResourceName)创建AlphaImage对象。问题是此方法正在引发NullReferenceException。查看此方法的代码,问题是这行代码返回null: MemoryStream stream = (MemoryStream)Assembly.GetCallingAsse

我正在使用.NET Compact Framework的AlphaMobileControls库。我正在使用AlphaImage.CreateFromResource(imageResourceName)创建AlphaImage对象。问题是此方法正在引发NullReferenceException。查看此方法的代码,问题是这行代码返回null:

MemoryStream stream = 
                (MemoryStream)Assembly.GetCallingAssembly().GetManifestResourceStream(imageResourceName);
这以前工作得很好,现在不行了,我不知道为什么。似乎我正在传递一个有效的资源名称。这是我使用项目属性的资源选项卡添加的资源。在Resources文件夹中,图像文件也在那里,构建操作设置为Embedded Resource。我甚至使用此代码检索可用资源,我使用的代码是返回的值之一:

string[] names = Assembly.GetCallingAssembly().GetManifestResourceNames();
然后我想,当AlphaImage.CreateFromResource()方法代码运行时,可用资源可能会有所不同。因此,我修改了代码以包含上述语句,然后如果传递的资源不是可用资源,则抛出InvalidOperationException。当我运行程序并使用调试器逐步检查代码时,添加的代码不再存在,并且不会引发InvalidOperationException,代码将一直运行,直到出现NullReferenceException。我搜索了我的项目,看看是否有对AlphaMobileControls的另一个版本的引用,而不是修改代码的版本,但我找不到任何引用


任何帮助都将不胜感激,提前感谢

检查来自
Assembly.GetCallingAssembly().GetManifestResourceNames()的结果
并查看您要查找的资源名称是否显示在此处。否则,您对资源属性(特别是“构建操作:嵌入式资源”)的设置可能会设置不正确。否则,可能某个文件夹已被重命名,您需要更改
imageResourceName

的值。我基本上用他的评论回答了这个问题。您需要从具有所需资源的程序集调用AlphaImage.CreateFromResource()。谢谢你


导致此停止工作的更改是,我将调用AlphaImage.CreateFromResource()的类从具有图像资源的类移动到一个单独的库中。因此,Assembly.GetCallingAssembly()返回的程序集没有资源。

是您正在调用的程序集。CreateFromResource(…)从中拥有资源还是库?正在调用的程序集。CreateFromResource(…)是一个具有图像资源的库。我没有正确回答Are的问题。我忘了我把代码移到了一个单独的库中,所以这就是为什么它不起作用的原因。谢谢