为什么与我的Silverlight客户端共享资源文件(resx)如此困难?

时间:2011-03-15 17:56:34

标签: silverlight wcf-ria-services resx

我正在尝试通过将资源文件链接到我的客户端,从我的网络(RIA服务?Silverlight主机)到客户端(Silverlight)共享资源文件(.resx文件)。当我尝试使用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文件添加到项目时使用“添加为链接”选项。

4 个答案:

答案 0 :(得分:2)

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

检查this。关于第5步的说明有点可以解释这种情况,但我现在正试图找到一个合适的方法。

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

答案 1 :(得分:2)

(可疑)解决方案是:

  1. 将resx文件复制(副链接)到silverlight客户端。
  2. 将“PublicResXFileCodeGenerator”添加到gen designer.cs文件的自定义工具属性。
  3. 打开designer.cs并将名称空间更改回web designer.cs文件。
  4. 构建解决方案以查找/调整相关的resx命名空间问题。
  5. 虽然有效,但我质疑拥有resx文件的单独副本的可行性。除了必须确保对web resx文件的更改被手动复制到silverlight客户端resx副本,还有其他任何潜在的陷阱......或者是否有替代解决方案。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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