我有以下方法:
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 \”,或者所有所需的附属程序集都是可加载和完全签名的。
我已经尝试运行自定义工具并确保将构建操作设置为“嵌入式资源”,因为已发布类似问题的其他人已提及。这些解决方案不解决了异常。
答案 0 :(得分:3)
看起来您需要翻转文件名,Strings
将是文件名。
关于放置文件的位置,取决于它应该在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
内部以查看示例。