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

10-10 22:06