2012-11-27 215 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引用同一个文件。

这工作!