【发布时间】:2014-10-08 17:37:40
【问题描述】:
我无法让 Silverlight 应用程序正常工作。这个项目很大,最近交给了我。它包括(除其他外):
- 一个包含资源的类库(我们称之为
MyResources)。这包含许多 .resx 文件,其中包含应用中各种标签/文本的翻译字符串。 - 链接到常规类库中所有资源文件的 Silverlight 类库。 (我们称这个项目为
MyResourcesSilverlight) - 引用
MyResourcesSilverlight的 Silverlight 应用程序
据我了解,由于安全问题,您无法使用 Silverlight 直接引用常规 .Net 程序集。这是有道理的,并解释了两个几乎相同的项目——Silverlight 类库和常规类库。 (还有很多其他项目使用常规类库)。
我遇到的问题是,当我尝试运行 Silverlight 应用程序时,它无法加载任何本地化字符串,并且我收到以下错误消息:
未捕获的错误:Silverlight 应用程序中未处理的错误 代码:4004
类别:ManagedRuntimeError
消息:System.Resources.MissingManifestResourceException:找不到适合指定区域性或中性区域性的任何资源。确保“MyResources.resources”在编译时已正确嵌入或链接到程序集“MyResourcesSilverlight”中,或者所有所需的附属程序集都是可加载且完全签名的。
从错误消息来看,它似乎很难提取资源文件 - 这从按钮、标签等缺失的文本中也很明显。
为了解决这个问题,我尝试了以下操作:
- 清理/重建解决方案。这没有效果。
- 右键单击资源文件并选择“运行自定义工具”。所有资源文件的自定义工具设置为
PublicResXFileCodeGenerator。除了重新生成代码之外,这也没有任何效果,这会导致类构造函数是内部的(尽管被设置为公共。另一天的另一个问题 - 或者从我所看到的 - 微软拒绝的一个已知问题修复)。 - 将所有资源文件设置为
Embedded Resource。这没有效果。
我一直在四处寻找遇到类似问题的其他人,并且尝试了几乎所有我能得到的东西,但似乎没有任何效果。要么我收到上面的错误消息,要么我收到类似The name 'MyResources' does not exist in the current context. 的错误消息。
如果有帮助的话,该项目最初是 Visual Studio 2010 项目,但我已将其转换为 Visual Studio 2012 项目。据我所知,没有任何东西改变命名空间,这是这个问题的常见原因。
谁能解释一下这里可能发生的事情?我很困惑。
编辑:
也许还值得注意:我在 Visual Studio 设计器中的任何表单上都没有看到任何类型的文本。当我将鼠标悬停在据称丢失的 StaticResource 上时,它显示“资源___ 无法解析。”。我怀疑这可能表明资源文件通常存在更大的问题。有人有什么想法吗?
【问题讨论】:
标签: c# .net silverlight visual-studio-2012 resx