为了账号安全,请及时绑定邮箱和手机立即绑定

MissingManifestResourceException是什么意思,以及如何解决它?

MissingManifestResourceException是什么意思,以及如何解决它?

繁星点点滴滴 2019-11-27 14:05:25
情况:我有一个名为的类库,RT.Servers其中包含一些资源(类型为byte[],但我认为这并不重要)同一类库包含一个返回这些资源之一的方法我有一个简单的程序(带有对该库的引用),仅调用该单个方法我收到MissingManifestResourceException以下消息:找不到适合于指定区域性或中性区域性的任何资源。确保在编译时将“ Servers.Resources.resources”正确嵌入或链接到程序集“ RT.Servers”中,或者确保所需的所有附属程序集都可加载并经过完全签名。我从来没有玩过文化或程序集签名,所以我不知道这里发生了什么。同样,这在使用相同库的另一个项目中也有效。有任何想法吗?
查看完整描述

3 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

解决此问题所需要做的就是Resources.resx在解决方案资源管理器中右键单击该文件,然后单击“运行自定义工具”。这将重新生成自动生成的Resources.Designer.cs文件。


如果.resx文件是手动添加到项目中的,则该文件的“自定义工具”属性必须设置为“ ResXFileCodeGenerator”。


问题是由于名称空间不匹配引起的,如果您在项目设置中更改了程序集的“默认名称空间”,则会发生此问题。(我将其从(以前)更改"Servers"为(现在)"RT.Servers"。)


在中的自动生成的代码中Resources.Designer.cs,包含以下代码:


internal static global::System.Resources.ResourceManager ResourceManager {

    get {

        if (object.ReferenceEquals(resourceMan, null)) {

            global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Servers.Resources", typeof(Resources).Assembly);

            resourceMan = temp;

        }

        return resourceMan;

    }

}

文字字符串"Servers.Resources"必须更改为"RT.Servers.Resources"。我是手动完成的,但是运行自定义工具也可以做到。


查看完整回答
反对 回复 2019-11-27
?
郎朗坤

TA贡献1921条经验 获得超9个赞

我今天刚遇到此问题,并且发现此Microsoft帮助和支持页面实际上确实可以解决该问题。


我在全局名称空间的文件顶部有几个委托,在MissingManifestResourceException运行该程序时,突然在这一行上得到了一个委托:


this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

然后,我将委托移到名称空间中,出现相同的错误。最后,我将委托置于该文件中的唯一类中,错误消失了,但是我不希望该委托位于该类或名称空间中。


然后我遇到了上面的那个链接


若要解决此问题,移动所有其他的类定义,以便它们出现在窗体的类定义之后。


我将委托(我将不考虑“类定义”)放在该文件的底部,本地名称空间之外,并且程序MissingManifestResourceException不再可


查看完整回答
反对 回复 2019-11-27
?
智慧大石

TA贡献1946条经验 获得超3个赞

我遇到了类似的问题,尽管我知道这不是OP造成的原因,但我将其张贴在这里,以便将来如果其他人遇到此问题,将可以找到答案。


如果在设计器类之前添加一个类,则MissingManifestResourceException在运行时将获得异常(无编译时错误或警告),因为


Visual Studio要求设计人员使用文件中的第一类。


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 814 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信