2

嗨,我有一个解决方案,我刚刚从 .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.dllPublicKey 相同。

我的问题是有谁知道为什么以及应该在哪里生成Dependency2.resources.dll (也许这是一个新设置)。在以前版本的 .Net 中,此代码没有问题。

这只发生在依赖项目上,而不是核心项目。看起来.Net 将这个项目结构与卫星组装结构混淆了。

4

1 回答 1

0

因此,经过多次尝试和错误,我得出了一个折衷的解决方案。

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

这行得通!

于 2012-12-03T20:44:41.957 回答