c# - ResourceManager.GetString() FileNotFound 异常

标签 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 版本中,这段代码没有问题。

这只发生在依赖项目中,而不是核心项目。看起来 .Net 几乎将此项目结构与 Satelite Assembly 结构混淆了。

最佳答案

因此,在多次尝试和错误之后,我找到了一个折衷的解决方案。

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

这成功了!

关于c# - ResourceManager.GetString() FileNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588329/

相关文章:

c# - 使用 Entity Framework 存储过程的日期参数

c# - XamlReader.Load(..) 时出现异常

WPF:从 DataTemplateSelector 类中的 UserControl 查找资源

android - Resources$NotFoundException 将属性作为颜色访问时

c# - .NET 中 AJAX 和 ViewState 的行为不一致

c# - 在 EF 中使用枚举作为主键

.net - 如何在 MEF 中导出类型,就好像导出属性已应用于该类型一样?

c# - HtmlSanitizer 与 .NET 4.0 不兼容

c# - 使用空对象初始值设定项有什么缺点吗?

c# - 如何从字符串转到变量名称?