我创建了一个程序集并将其重命名。
然后我在调用该程序集时开始收到运行时错误:
toolsMenuName = resourceManager.GetString(resourceName);
在运行时,resourceName
变量的值为 "enTools"。
找不到适用于指定区域性或中性区域性的任何资源。请确保在编译时正确地嵌入或链接了“Jfc.TFSAddIn.CommandBar.resources”到程序集“Jfc.TFSAddIn”,或者需要加载所有卫星程序集并完全签名。
代码如下:
string resourceName;
ResourceManager resourceManager = new ResourceManager("Jfc.TFSAddIn.CommandBar", Assembly.GetExecutingAssembly());
CultureInfo cultureInfo = new CultureInfo(_applicationObject.LocaleID);
if(cultureInfo.TwoLetterISOLanguageName == "zh")
{
CultureInfo parentCultureInfo = cultureInfo.Parent;
resourceName = String.Concat(parentCultureInfo.Name, "Tools");
}
else
{
resourceName = String.Concat(cultureInfo.TwoLetterISOLanguageName, "Tools");
}
toolsMenuName = resourceManager.GetString(resourceName); // EXCEPTION IS HERE
我可以看到在项目中包括了CommandBar.resx文件,我可以打开它并且可以看到 "enTools" 字符串。看起来要么资源没有包含在程序集中,要么资源已经包含但是 .NET 无法解析名称。