好的,尝试访问resx文件时出现MissingManifestResourceException
异常。
我有一个工作正常的代码片段,而我有另一个无效的代码片段。我不确定这是怎么回事。
工作摘要
static void Main(string[] args)
{
//Keep an Eye on the first parameter I have passed, it has ".Lang" in it
var rm = new ResourceManager("ConsoleApp1.App_GlobalResources.Lang", Assembly.GetExecutingAssembly());
var ci = Thread.CurrentThread.CurrentCulture;
var a = rm.GetString("Name", ci);
Console.WriteLine("Hello World!");
}
无效片段:
static void Main(string[] args)
{
// Keep an eye on first parameter no ".Lang" here.
var rm = new ResourceManager("ConsoleApp1.App_GlobalResources", Assembly.GetExecutingAssembly());
var ci = Thread.CurrentThread.CurrentCulture;
var a = rm.GetString("Name", ci);
Console.WriteLine("Hello World!");
}
我的解决方案结构:
Lang.en-US文件的属性(正常工作):
美国文件的属性(无效):
问题1:为什么Lang.en-US即使生成IT也无法生成任何.CS文件
问题2:为什么基本的裸en-US.resx会创建一个.CS文件,但仍然无法正常工作。
我调查过的链接:SO LINK
图片1:
图片2:
答案 0 :(得分:1)
您的工作示例如下。
Lang.en-US.resx
,并且默认为Lang.resx
您的“非工作”示例不起作用,因为您没有给它提供虚拟文件前缀,而是一个文件夹路径。
解决方案: 一种理想的情况是使用您的以下多种语言文件。
语言文件夹(即App_GlobalResources [坏名])
代码:
var rm = new ResourceManager("ConsoleApp1.App_GlobalResources.Lang", Assembly.GetExecutingAssembly());