如何在ASP.NET中使用ResourceManager和资源文件?

时间:2015-09-30 16:27:07

标签: c# .net asp.net-mvc system resourcemanager

我有以下方法:

    private void SetResources(string filename = ResxFileName)
    {
        if (_resourceManager == null)
        {
            _resourceManager = new ResourceManager(filename + ".Strings", GetType().Assembly);
        }
    }

如果ResxFileName =“Example”,那么Example.Strings.resx需要位于项目中才能访问它?我已经尝试将它放在解决方案资源管理器下的项目属性中,但是每当调用GetString(“ExampleString”)并且ExampleString作为Name存在并且在Example.Strings.resx中有一个值时,我得到以下系统。例外:

  

无法找到适合指定文化或中性文化的任何资源。确保在编译时将“Example.Strings.resources”正确嵌入或链接到assembly \“ProjectName \”,或者所有所需的附属程序集都是可加载和完全签名的。

我已经尝试运行自定义工具并确保将构建操作设置为“嵌入式资源”,因为已发布类似问题的其他人已提及。这些解决方案解决了异常。

1 个答案:

答案 0 :(得分:3)

看起来您需要翻转文件名,Strings将是文件名。

关于放置文件的位置,取决于它应该在App_GlobalResources

的Web项目中

试试这个

private void SetResources(string filename = ResxFileName)
{
    if (_resourceManager == null)
    {
        Assembly assembly = System.Reflection.Assembly.Load("App_GlobalResources");
        _resourceManager = new ResourceManager("Resources." + filename, assembly);
    }
}

例如,您可以将Strings.en-USStrings.fr个资源文件放在App_GlobalResources文件夹中。

编辑:

我不知道要添加什么,这是正确的做法,为了时间,我为你创建了一个演示项目。

DEMO DOWNLOAD

查看HomeController内部以查看示例。