好的,我在尝试访问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文件的属性(Works Fine):
en-US文件的属性(不要工作):
问题1:为什么Lang.en-US不生成任何.CS文件,即使那时IT工作也是如此
问题2:为什么基本的裸en-US.resx会创建一个.CS文件但仍然无效。
链接我调查:SO LINK
图1:
图2:
您的工作示例如下。
Lang.en-US.resx
并将默认为Lang.resx
您的非工作示例不起作用,因为您没有为其提供虚拟文件前缀,而是提供文件夹路径。
解决方案:一种理想情况,就是使用您使用以下多语言文件。
语言文件夹(即:App_GlobalResources [错误名称])
码:
var rm = new ResourceManager("ConsoleApp1.App_GlobalResources.Lang", Assembly.GetExecutingAssembly());