如何在ASP.NET中使用ResourceManager和资源文件?
How to use ResourceManager and resources file in ASP.NET?
我有以下方法:
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 中具有值时,我得到以下信息System.Exception:
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Example.Strings.resources\" was correctly embedded or linked into assembly \"ProjectName\" at compile time, or that all the satellite assemblies required are loadable and fully signed.
我已尝试 运行 自定义工具并确保构建操作设置为 "Embedded Resource",正如其他发布过类似问题的人所提到的那样。这些解决方案未解决异常。
看来您需要翻转文件名,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
的内部以查看示例。
我有以下方法:
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 中具有值时,我得到以下信息System.Exception:
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Example.Strings.resources\" was correctly embedded or linked into assembly \"ProjectName\" at compile time, or that all the satellite assemblies required are loadable and fully signed.
我已尝试 运行 自定义工具并确保构建操作设置为 "Embedded Resource",正如其他发布过类似问题的人所提到的那样。这些解决方案未解决异常。
看来您需要翻转文件名,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
的内部以查看示例。