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

为什么与我的Silverlight客户端共享资源文件(resx)如此困难?,silverlight,wcf-ria-services,resx,Silverlight,Wcf Ria Services,Resx,我试图通过将资源文件链接到我的客户端,将资源文件(.resx文件)从我的web(RIA服务?Silverlight主机)共享到客户端(Silverlight)。当我尝试使用ResourceManager对象访问资源时,出现以下错误: System.Resources.MissingManifestResourceException was caught Message=Could not find any resources appropriate for the specified cul

我试图通过将资源文件链接到我的客户端,将资源文件(.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文件添加到我的项目时,我正在使用“添加为链接”选项。

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


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

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

,我目前也正在处理这个问题。我已经将问题缩小到名称空间。对我来说,我创建了一个Silverlight业务应用程序,我想重命名web项目并更改其名称空间。我一这么做,SL项目就开始了他变得支离破碎

看看。第五步的注释可以解释这种情况,但我目前正试图找到一个合适的方法来解决这个问题

编辑:这对我有用:

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

  • 将resx文件复制(副链接)到silverlight客户端
  • 将“PublicResXFileCodeGenerator”添加到gen designer.cs文件的自定义工具属性中
  • 打开designer.cs并将命名空间更改回web designer.cs文件的命名空间
  • 生成用于查找/调整相关resx命名空间问题的解决方案

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

    是因为SL项目类型使用了.NET的子集吗框架和RIA服务项目类型没有?我知道,这是我正在模拟的模式。这发生在一个插件中,该插件由RIA服务类库组成,该类库由我的主应用程序(Silverlight Business application template)通过MEF发现。我正在使用“添加为链接”选项。阅读问题.resx文件的代码生成是否设置为公共?(检查属性)我正在使用PublicResXFileCodeGenerator作为自定义工具(如果您需要的话)。感谢您的提示,在创建Silverlight业务应用程序并尝试更改名称空间后,这对我来说也很有效。Silverlight论坛链接已断开,使得此答案毫无用处。