我有两个ASP。NET Web项目(ProjectA和projecb)。当ProjectA中的类正在实例化ProjectB中的一个类时,它使用了一个资源文件Blah。resx,我得到这个错误:

一个System.Resources类型的异常。mscorlib.dll中出现了MissingManifestResourceException',但在用户代码中没有处理。 无法找到适用于指定区域性或中性区域性的任何资源。确保“资源。等等。”资源“正确嵌入或链接到程序集”App_GlobalResources。Sn_flri6”,或者所有所需的附属程序集都是可加载的并具有全符号。

是什么导致的?

在微软的网站上有一篇关于http://support.microsoft.com/kb/318603的文章,它建议:

要解决此问题,请移动所有其他类定义,使它们出现在表单的类定义之后。

这是一个Windows窗体项目的解决方案,我不确定这是否也适用于Web项目。


当前回答

我有一个WinForms应用程序,解决方案中只有一个项目。 瞄准。net Framework 4.0 使用SharpDevelop 4.3作为我的IDE

听起来很傻,但我碰巧在“资源”上将“逻辑名称”属性设置为“资源”。resx文件”。一旦我清理了那块地,一切都没问题了。

通常,当您将随机文件添加为EmbeddedResource时,您通常希望将逻辑名称设置为合理的名称,出于某种原因,我在资源中也做了同样的操作。Resx文件,这一切都搞砸了…

希望这能帮助到一些人。

其他回答

我是这样解决的:

右键点击资源文件,然后选择属性 将“Build Action”属性编译为“Embedded Resource” 然后构建并运行

它工作得很完美。

在我的例子中,我试图将一个Form从一个项目迁移到另一个项目。结果我只忘记添加Form。Resx到新项目。在窗体中,我使用了一些图标,因此它依赖于资源。

我也面临着同样的问题,尝试了答案中提到的所有解决方案,但似乎都不起作用。结果在将代码签入TFS期间。TFS没有签入Resx文件,它只签入了设计器文件。因此,所有其他开发人员在他们的机器上运行时都面临着这个问题。手动签入resx文件就可以了

还有一个原因:如果您的名称空间有一个连字符(“-”),那么它将正确构建和运行,但资源将不可访问。名称空间(标识符)不应该有连字符,但除了在加载资源时,似乎没有在任何地方强制使用连字符。在过去的十年里,这已经让我痛苦了两次。

在我的例子中,一系列考虑不良的全局文本替换无意中改变了资源设计器cs文件中的这一行。

由于该参数中的名称空间不再与类的名称空间匹配,因此应用程序在运行时会感到困惑。

检查设计器的名称空间是否与该行中的字符串参数匹配。