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

本文关键字:ResourceManager 资源 源文件 ASP NET | 更新日期: 2023-09-27 18:15:15

我有以下方法:

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

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

找不到适合指定区域性或中性区域性的任何资源。确保Example.Strings。资源'"在编译时被正确嵌入或链接到程序集'"ProjectName'"中,或者所需的所有附属程序集都是可加载的并且是完全签名的。

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

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

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

至于在哪里放置文件,这取决于,对于一个web项目,它应该在App_GlobalResources

试试这个

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-US, Strings.fr资源文件放在App_GlobalResources文件夹中。

编辑:

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

演示下载

查看HomeController内部的示例