ResourceManager.GetString()FileNotFound异常

时间:2012-11-27 16:10:58

标签: c# .net resources .net-4.5 resourcemanager

您好我有一个解决方案,我刚从.Net 3.5 / MVC1 / VS2008迁移到.Net 4.5 / MVC4 / VS2012

大部分工作都运行良好,但我有一个字符串资源文件问题

我的解决方案有3个项目,其中一个是核心项目,另一个项目依赖于核心。

在每个项目中,我都有一个以下列模式命名的字符串文件:

核心项目 - 文件名是     的 Strings.resx

Dependency1项目 - 文件名是     的 Dependency1Strings.resx

Dependency2项目 - 文件名是     的 Dependency2Strings.resx

每个文件都包含与特定项目相关的字符串。

当解决方案加载时,我使用以下代码为每个项目创建一个ResourceManager(示例使用Dependency2):

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

稍后我尝试拨打manager.GetString(messageName,ClientCulture)

我收到一个FileNotFoundException,指出无法找到 Dependency2.resources.dll 文件。

奇怪的是,它为 Dependency2.resources.dll 列出的PublicToken与 Dependency2.dll 的PublicKey相同。

我的问题是,是否有人知道应该生成 Dependency2.resources.dll 的原因和位置(也许这是一个新设置)。在以前版本的.Net中,这段代码没有问题。

这仅适用于Dependency项目,而不适用于Core项目。看起来.Net几乎让这个项目结构与Satelite Assembly结构混淆。

1 个答案:

答案 0 :(得分:0)

因此经过大量的尝试和错误后,我得到了一个妥协的解决方案。

我将所有资源字符串放在同一个resx文件中,然后让所有3个资源管理器引用同一个文件。

这很有用!