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


当前回答

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

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

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

其他回答

当我尝试共享资源时。resx文件从一个c#项目到另一个c#项目,我得到了这个问题。将Form类移到其文件开头的建议是不合适的。我就是这样解出来的。您实际上使用了从第二个项目到第一个项目的链接,然后启用resource.designer.cs文件的再生。

删除第二个项目的Properties/Resources。resx文件 添加第一个项目的Properties/Resources。resx文件作为第二个项目中Properties文件夹的链接。不要将它添加到项目的根级别。 不要添加第一个项目的Properties/Resources.designer.cs! 关于第二个项目的资源的属性。ResXFileCodeGenerator作为CustomTool 右键单击资源。resx,然后选择“运行自定义工具”。这将生成一个新的designer.cs文件。

注意:我将避免编辑resource.designer.cs文件,因为这是自动生成的。

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

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

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

我在尝试在EF上运行update-database命令时遇到了同样的问题。结果发现,抛出异常的迁移将.resx文件排除在项目之外。我只是右键单击。resx文件,然后单击“Include In Project”。 问题解决了。

只是另一个案例。我用两个项目复制了一个解决方案,部分在Windows资源管理器中重命名它们(文件夹名,.sln和.csproj文件名),部分在Visual Studio中使用大量的查找和替换操作(名称空间等)。尽管如此,执行干事所说的例外情况仍然发生了。我发现程序集和命名空间名称仍然很旧。

虽然项目和其他所有内容都已命名为OfficeStyle,但程序集名称和默认名称空间仍然命名为Linckus。

在此修正之后,一切都恢复正常,编译并运行:)

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

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