【问题标题】:How to use ResourceManager and resources file in ASP.NET?如何在 ASP.NET 中使用 ResourceManager 和资源文件?
【发布时间】:2015-09-30 16:27:06
【问题描述】:

我有以下方法:

    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.resources”正确嵌入或链接到程序集“ProjectName”,或者确保所需的所有附属程序集都是可加载且完全签名的。

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

【问题讨论】:

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


    【解决方案1】:

    看来您需要翻转文件名,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-USStrings.fr 资源文件放在App_GlobalResources 文件夹中。

    编辑:

    不知道要加什么,这样才是正确的做法,因为时间关系,我给大家做了一个demo项目。

    DEMO DOWNLOAD

    查看HomeController 的内部以查看示例。

    【讨论】:

    • 看起来我有一个 App_LocalResources 文件夹,但是每当我添加您添加到方法中的那行代码并将我的 .resx 文件放入该文件夹时,我都会收到一个异常表示无法加载文件或程序集“App_LocalResources”。
    • 字符串的第一部分是命名空间,第二部分是资源文件名,但不要放扩展名。显示硬编码值
    • 我有一个名为 MVC 的项目。我在 MVC 中有一个名为 App_LocalResources 的解决方案文件夹。我已将 ControllerResources.resx 移至 App_LocalResources 文件夹。为了这个问题,我有以下代码,dotnetfiddle.net/OkDXsO
    • 你的代码和我的不一样。将命名空间resource. 后跟资源文件名。您的代码执行相反的操作,因此它将在名称空间中使用该文件名值查找名为 String 的文件
    • 兄弟看看我刚刚做的编辑,我为你放了一个示例项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多