我创建了一个程序集,然后将其重命名。

然后,我在调用时开始出现运行时错误:

toolsMenuName = resourceManager.GetString(resourceName);
resourceName变量在运行时为“enTools”



代码:
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无法解析名称。

最佳答案

我认为更简单的解决方案是为每种语言创建单独的资源文件。

就这种情况而言,检查包含资源的程序集是否将默认 namespace 设置为相同的文本(VS中的Project-> Properties-> Default namespace ;)

还要检查resx文件是否将属性BuildAction设置为“嵌入式资源”

07-27 19:47
查看更多