2011-03-15 52 views
6

我試圖通過資源文件鏈接到我的客戶分享從我的網站(RIA服務?Silverlight的主機)向客戶端(Silverlight的)資源文件(.resx文件)。當我嘗試接入資源使用ResourceManager對象我得到以下錯誤:爲什麼很難與我的Silverlight客戶端共享資源文件(resx)?

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文件添加到我的項目中時,選擇「鏈接」選項。

+0

是不是因爲SL項目類型使用.NET框架和RIA役項目類型的子集不? – 2011-03-15 18:53:08

+0

你是什麼意思? – Jordan 2011-03-15 19:48:56

回答

2

我目前正在解決此問題那一刻也是。我將這個問題縮小到名稱空間。對我而言,我創建了一個Silverlight業務應用程序,我想重命名Web項目並更改其名稱空間。一旦我做到這一點,SL項目就破裂了。

檢查this出來。第5步中的註釋說明了這種情況,但我目前正試圖找出一個體面的方法。

編輯:這個工作對我來說:http://forums.silverlight.net/forums/p/184013/420509.aspx

+0

感謝您的提示,創建Silverlight業務應用程序後,此工作也適用於我,然後嘗試更改命名空間。 – 2011-06-16 21:54:40

+2

Silverlight論壇鏈接已損壞,使此答案無用。 – 2013-11-19 20:22:06

0

檢查Silverlight業務應用程序模板(創建一個新的項目,選擇Silverlight業務應用程序模板)。

* .resx共享在該項目中通過添加現有項目作爲鏈接成功完成 - >在Silverlight項目的AddExisting項目中,選擇* .resx文件,檢查「添加」按鈕,展開並選擇'添加爲鏈接'選項。

+0

我知道,那是我正在模擬的模式。這發生在由RIA服務類庫組成的插件中,該庫是通過我的主應用程序(它是Silverlight業務應用程序模板)通過MEF發現的。我正在使用「添加爲鏈接」選項。閱讀問題。 – Jordan 2011-03-16 13:07:00

+0

您的.resx文件的代碼生成是否設置爲公共? (檢查屬性) – Maciek 2011-03-16 17:29:00

+0

我使用PublicResXFileCodeGenerator作爲自定義工具,如果這就是你要求的。 – Jordan 2011-03-16 17:40:18

0

添加爲鏈接的解決方案,部分地解決了這個問題,如果我把一個資源文件(添加鏈接)在另一個文件夾,是不是該模板創建的一個,你會再次收到此錯誤,你將有如果您打算使用該模板,請將所有資源放在同一個Web \ Resources文件夾中。 但是,如果你想鏈接其他服務與自己的資源(RIA服務),以及如果我嘗試任何方法,直到今天會發生什麼情況,並且我仍然收到此令人毛骨悚然的錯誤

2

A(有問題的)解決方案是:

  1. 副本(副聯)RESX文件到Silverlight客戶端。
  2. 添加「PublicResXFileCodeGenerator」的自定義工具屬性根designer.cs文件。
  3. 打開designer.cs並將名稱空間更改回到web designer.cs文件的名稱空間。
  4. 構建解決方案以查找/調整相關的resx命名空間問題。

它的工作,但我質疑有單獨的副本的可行性resx文件。除了必須確保對Web進行更改resx文件手動複製到silverlight客戶端的resx副本,還有其他潛在的缺陷......還是有其他解決方案。