2010-07-27 437 views
6

我有一個名爲Localize.resx的資源文件,其中包含英文字符串。我將它複製並粘貼到同一個文件夾(App_GlobalResources)中,VS創建了一個副本,我將副本重命名爲Localize.sl.resx,將原始副本重命名爲Localize.en.resx。現在代碼隱藏文件(Localize.en.designer.cs)中的所有內容都消失了。刪除設計器文件並選擇運行自定義工具會生成新的但完全空白的設計器文件。資源(RESX)文件搞砸

我仍然在我的所有字符串在這兩個resx的,但設計器文件(空),所以應用程序不會建立。

有什麼建議嗎?

這是使用ASP.NET MVC解決方案的Vs 2010。

回答

8

這是ASP.NET documentation對資源文件所說的內容。

它並沒有專門討論在動態生成的代碼隱藏設計器文件,但是如果仔細閱讀粗體文本,它實際上是說您需要沒有指定語言的基本文件,因此,只有這樣纔有意義文件將包含自動生成的代碼。

創建資源文件時,首先創建一個基本的.resx文件,對於要支持的每種語言,創建一個具有相同文件名的新文件,但在名稱中包含語言。或語言和文化(文化名)文化名稱的列表,請參閱CultureInfo類。例如,您可以創建以下文件:

•WebResources.resx

基資源文件。這是默認(後備)資源文件。

•Web Resources.es.resx

西班牙語資源文件。

•WebResources.es-mx.resx

西班牙語(墨西哥)的資源文件明確。

•WebResources.de.resx

德國的資源文件。」

其實我從來沒有注意到這之前,但是當我去檢查我的老項目,我看到他們都有基本文件所以我只是糾正它遵循該慣例,現在它的作品

+0

是的,但只有一個具有相同根文件名的文件獲取自動設計器代碼生成,這是文件沒有語言說明符。這很有意義,因爲在使用代碼時,只使用一個類名(假設我們正在討論全局資源,並且這些資源位於Resources命名空間中,默認情況下)。 – mare 2010-07-27 14:21:47

+0

對不起@mare,我錯了:) resx是包含字符串的「xml類型」結構。儘管如此,只有一個代碼,其中一個用於將resx鏈接到資源管理器。 ALTOOUUUGGHHH ...它爲每個resx生成一個cs文件(除默認值外全部爲空) – Nealv 2010-07-27 14:50:13

2

如果我是你,我會:

創建一個新的resx文件; 打開舊的; 按ctrl + a在舊的; 按ctrl + v在新的; 保存新的; 刪除舊的; 重命名新的:)

這應該很快解決問題。 您還可以通過單擊顯示全部按鈕來檢查cs文件是否未從文件中排除

+0

瘋狂的一系列步驟:)) – 2010-07-27 13:09:57

+0

你知道,這實際上一直工作,直到我重命名新文件的步驟,Resource1.resx之前是什麼,並且它的設計器文件充滿代碼之後重命名爲Localize.sl.resx設計器文件中的所有代碼都消失了。 – mare 2010-07-27 13:12:13

+0

嗯,怪異的,是您的自定義工具設置爲GlobalResourceProxyGenerator。 @edit此外,檢查你是否刪除舊的,在你的Windows文件夾(檢查外VS)您的舊resx和cs和設計器類被刪除。我認爲他們仍然在那裏,但只是從你的項目中排除在VS – Nealv 2010-07-27 13:15:00

9

我有同樣的問題 - 一些resx文件不存在的Designer.cs文件。

此修復程序是爲RESX文件中設置的屬性:

Build Action - Embedded Resource 
Custom Tool - PublicResXFileCodeGenerator 
+1

不錯的解決方案.... – MDDDC 2014-02-28 10:17:09

0

對不起,以此來寫評論。我的名聲實際上小於50 =(但我認爲這也許很重要)

這回答Alvis的回答: 你的解決方案的確做到了,但我還需要修改基礎屬性的訪問修飾符從內部設計代碼文件到公共否則我試圖訪問RESX在XAML時得到XmlParseExceptions

編輯:。 所以這referes到C#/ WPF能夠在ASP.NET是不同