您好,我有一个解决方案,我刚刚从 .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/