【问题标题】:Why is it so hard to share resource files (resx) with my Silverlight client?为什么与我的 Silverlight 客户端共享资源文件 (resx) 如此困难?
【发布时间】:2011-03-15 17:56:33
【问题描述】:

我正在尝试通过将资源文件链接到我的客户端来将资源文件(.resx 文件)从我的 Web(RIA 服务?Silverlight 主机)共享到客户端(Silverlight)。当我尝试使用 ResourceManager 对象访问资源时,出现以下错误:

System.Resources.MissingManifestResourceException was caught
  Message=Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "PPCa.Modules.ProjectManager.Client.ViewModels.ResourceStrings.resources" was correctly embedded or linked into assembly "PPCa.Modules.ProjectManager.Client" at compile time, or that all the satellite assemblies required are loadable and fully signed.
  StackTrace:
       at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
       at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
       at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
       at System.Resources.ResourceManager.GetString(String name)
       at PPCa.Modules.ProjectManager.Web.Helpers.ResourceHelper.GetEnumText[TResource](ProjectStatus a_projectStatus)
  InnerException: 

编辑:

当我说我正在链接资源文件时,我的意思是在将现有 resx 文件添加到我的项目时使用“添加为链接”选项。

【问题讨论】:

  • 是不是因为 SL 项目类型使用 .NET 框架的子集而 RIA 服务项目类型没有?

标签: silverlight wcf-ria-services resx


【解决方案1】:

我目前也在处理这个问题。我已将问题缩小到命名空间。对我来说,我创建了一个 Silverlight 业务应用程序,我想重命名 Web 项目并更改其命名空间。我一这样做,SL 项目就坏了。

检查this。第 5 步的注释可以解释这种情况,但我目前正试图找出一个体面的方法来解决这个问题。

编辑:这对我有用:http://forums.silverlight.net/forums/p/184013/420509.aspx

【讨论】:

  • 感谢您的提示,这在创建 Silverlight 业务应用程序然后尝试更改命名空间后也对我有用。
  • Silverlight 论坛链接已损坏,导致此答案无用。
【解决方案2】:

一个(有问题的)解决方案是:

  1. 将 resx 文件复制(副链接)到 silverlight 客户端。
  2. 将“PublicResXFileCodeGenerator”添加到自定义工具属性以生成 Designer.cs 文件。
  3. 打开 Designer.cs 并将命名空间改回 Web Designer.cs 文件的命名空间。
  4. 构建解决方案以查找/调整相关的 resx 命名空间问题。

它有效,但我质疑拥有单独的 resx 文件副本的可行性。除了必须确保对 web resx 文件的更改手动复制到 silverlight 客户端 resx 副本之外,是否还有其他潜在的陷阱......或者是否有替代解决方案。

【讨论】:

    【解决方案3】:

    检查 Silverlight 业务应用程序模板(创建一个新项目,选择 Silverlight 业务应用程序模板)。

    *.resx 共享通过将现有项目添加为链接在该项目中成功实现 -> 在您的 Silverlight 端项目中,添加现有项目,选择您的 *.resx 文件,检查“添加”按钮,展开它并选择“添加为链接”选项。

    【讨论】:

    • 我知道,这就是我正在模仿的模式。这发生在一个由 RIA 服务类库组成的插件中,该类库由我的主要应用程序(Silverlight 业务应用程序模板)通过 MEF 发现。我正在使用“添加为链接”选项。阅读问题。
    • 您的 .resx 文件的代码生成是否设置为 public ? (检查属性)
    • 我正在使用 PublicResXFileCodeGenerator 作为自定义工具,如果这就是您的要求。
    【解决方案4】:

    添加为链接作为解决方案,部分解决了这个问题,如果我将资源文件(添加为链接)放在另一个不是模板创建的文件夹中,您将再次收到此错误,您将不得不如果您打算使用该模板,请将所有资源放在同一个 Web\Resources 文件夹中。 但是,如果您想将其他服务与他们自己的资源(Ria 服务)链接起来会发生什么,如果我尝试任何方法直到今天,我仍然收到这个该死的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2017-10-11
      • 2010-11-11
      • 2011-04-09
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      相关资源
      最近更新 更多