2012-02-13 69 views
0

我在網絡上發現了一個.NET 4.0的免費程序,但必須複製代碼才能編譯VS2008。我正在考慮文化在.NET版本中的處理方式。 我得到這個錯誤:.NET 4.0到3.0找不到適用於指定文化或中性文化的任何資源

System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "A.B.C.Resources.ExceptionMessage.resources" was correctly embedded or linked into assembly "A.B.C.csproj" at compile time, or that all the satellite assemblies required are loadable and fully signed.

這是一個C#.dll文件(類庫),而我從一個控制檯程序調用它。 它有一個強鍵文件分配給它。

它炸燬任何聲明如下:

return ResourceManager.GetString("XYZ"); 

它看起來像所有的資源都是英文的,這就是我唯一需要的語言。 我只是在尋找如何避免異常。

+0

您是否也複製了原始項目的資源? – svick 2012-02-13 15:54:40

+0

這聽起來像項目解決方案不完整。這與.NET 4.0/3.0無關,因爲你的結論是錯誤的,ResourceManager類沒有改變。即使它確實......它仍然會得到支持。 – 2012-02-13 15:58:20

+0

是的,我複製了資源文件,並剛剛同步了AssemblyInfo.cs文件。關於什麼可能不完整的提示? – NealWalters 2012-02-13 17:01:28

回答

2

當我複製文件並重建新的VS2008項目時,Visual Studio解決方案資源管理器中沒有關於資源文件的層次關係。例如,ExceptionMessage.resx和ExceptionMessage.Designer.cs處於同一級別;而通常,Designer.cs文件在.resx文件下縮進。我不確定發生了什麼。

所以我做的是創建一個新的.resx文件,並仔細複製使用記事本和文件合併程序,.resx文件和.cs文件的部分。然後它運行良好。

我還不是很確定問題是什麼,但我知道這個問題已經解決了。今天在這個問題上失去了大約5個小時。

0

從版本4和版本3解決方案中比較組件中的[assembly: AssemblyCulture("")]屬性可能是值得的。

默認是 - 我認爲 - 沒有。

MSDN documentation

Putting this attribute on an assembly and using something other than the empty string ("") for the culture name will make this assembly look like a satellite assembly, [...]

也許你需要明確定義,或它已經被定義,但不應該是什麼?

+0

4.0和我的版本都沒有文化。在您發佈的MDSN頁面中,看起來像只有在AssemblyCulture只有一個資源並且沒有可執行代碼的情況下才使用AssemblyCulture。我的身邊仍然沒有運氣。 – NealWalters 2012-02-13 16:59:59

0

我遇到過這個困難,發現原因與項目屬性中的程序集名稱和默認名稱空間有關。它有助於將它們設置爲相同的,或者這種效果。

相關問題