我有两个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项目。


当前回答

另一件要检查的事情是你是否在EmbeddedResource上定义了LogicalName或ManifestResourceName。如果您的项目文件正在使用它们,请确保它们被适当地定义,因为它们可能导致资源使用您不期望的名称。

其他回答

仅仅因为您引用了项目B的DLL,并不意味着项目A的资源管理器知道项目B的App_GlobalResources目录。

您使用的是网站项目还是web应用程序项目?在后者中,Visual Studio应该允许您链接源代码文件(不确定前者,我从未使用过它们)。这是一个鲜为人知但很有用的特性,下面将对其进行描述。这样,您就可以将项目B资源文件链接到项目A。

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

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

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

希望这能帮助到一些人。

在我的情况下,资源文件的构建动作已经是嵌入式资源,但每次我运行update-database,我得到了相同的错误,所以我做了其他步骤,它是有效的:

将“生成操作”属性更改为“编译” 构建(有很多错误) 将“生成操作”属性更改回“嵌入式资源” - database就

出于某种原因,它起作用了。

一种方法是将共享的类/资源放在单独的类库项目中,并在两个网站中引用它们。

在一个NetCore项目中有类似的问题,我注意到在我添加了我的迁移(让我们将其命名为WhateverMigration)后,作为EmbeddedResource的.resx文件引用没有添加到.csproj中,即使一切看起来都很好。所以我打开我的。csproj文件,添加:

<EmbeddedResource Update="Migrations\202107071914322_WhateverMigration.resx">
    <Generator></Generator>
    <DependentUpon>202107071914322_WhateverMigration.cs</DependentUpon>
</EmbeddedResource>