2012-11-27 270 views
2

您好我有我剛剛從.net 3.5遷移的解決方案/ MVC1/VS2008到.NET 4.5/MVC4/VS2012ResourceManager.GetString()FileNotFound異常

大多數事情的工作很好,但我有一個字符串資源文件問題

我的解決方案有3個項目,其中一個是核心,另一個依賴於核心。

在每一個我有以下模式命名一個字符串文件的項目:

核心項目 - 文件名是 Strings.resx

依賴關係1項目 - 文件名 Dependency1Strings.resx

Dependency2項目 - 文件名是 Dependency2Strings.resx

每個這些文件有任何與特定項目的字符串。

當溶液負載創建使用下面的代碼(例如使用Dependency2)每個項目都有一個ResourceManager的:

ResourceManager manager = new ResourceManager("Dependency2.Dependency2Strings", typeof(Dependency2Strings).Assembly); 

後來,當我嘗試調用manager.GetString(messageName,ClientCulture)

我得到一個FileNotFoundException異常,指出文件無法找到Dependency2.resources.dll

奇怪的是,它列出了Dependency2.resources.dll的PublicToken是一樣的公鑰對Dependency2.dll

我的問題是沒有人知道爲什麼和在哪裏應該生成Dependency2.resources.dll(也許這是一個新的設置)。在以前版本的.Net中,這段代碼沒有問題。

這隻發生在依賴項目上,而不是核心項目上。幾乎看起來.Net將這個項目結構與衛星組裝結構混爲一談。

+0

如果您不打算說什麼有用的話,請不要說任何話。 – suzi167

回答

0

因此,經過大量的嘗試和錯誤,我來到了一個妥協解決方案的一輪。

我將所有資源字符串放入同一個resx文件,然後讓所有3個resourcemanagers引用同一個文件。

這工作!