嗨,我有一个解决方案,我刚刚从.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结构混淆了。
最佳答案
因此,经过多次尝试和错误,我找到了一个折衷解决方案。
我将所有资源字符串放入同一个resx文件中,然后让所有3个资源管理器都引用同一个文件。
这工作了!
关于c# - ResourceManager.GetString()FileNotFound异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13588329/