我很难让Silverlight应用程序正常运行。该项目规模很大,最近交给我。它包括(除其他外):
MyResources
)。这包含许多.resx文件,其中包含应用程序中各种标签/文本的翻译字符串。MyResourcesSilverlight
)MyResourcesSilverlight
据我所知,使用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上时,它会显示“资源___无法解析”。我怀疑这可能表明资源文件存在更大的问题。有人有什么想法吗?
答案 0 :(得分:0)
我最终解决了这个问题,但我仍然不能100%确定我所采取的措施。这就是我的所作所为:
由于两个库项目的布局很奇怪,每当我触摸MyResources项目时,它都会自动更新MyResourcesSilverlight项目。这意味着,如果我执行"运行自定义工具"在MyResources上,它将使用MyResources的命名空间重新生成资源设计器文件。如果我进入MyResourcesSilverlight项目并执行"运行自定义工具"在那里的资源上,它将使用MyResourcesSilverlight命名空间重建文件。
当我开始挖掘有问题的XAML文件时,我注意到他们指的是这样的事情:
xmlns:resources="clr-namespace:MyResources.Resouce;assembly=MyResourcesSilverlight"
这使我在MyResourcesSilverlight项目中生成的文件中的命名空间中看了两次。当然,在进行"运行自定义工具"在资源文件上,它是在MyResourcesSilverlight命名空间而不是MyResources命名空间中生成它们。我将MyResourcesSilverlight项目的默认命名空间设置为MyResources,然后执行"运行自定义工具"再次重新生成自动生成的代码。尽管手动设置自动生成的代码以创建公共事物,我仍然需要手动进入并将类构造函数从内部切换到公共。一旦我这样做,事情似乎开始奏效。
所以,如果我总结一下,我会说看下面的内容:
希望这可以帮助其他可能遇到类似问题的人。