好的,我的resx文件存在问题,原因是我有这个错误
名称空间“资源”已包含“SiteResources”
的定义所有文件都在App_GlobalResources中,但我一直收到此错误
任何指针
答案 0 :(得分:5)
即使您在Visual Studio中隐藏它们,它也有可能尝试读取类似名称的文件,
如果在GlobalResources
范围内您有多个文件,请尝试重命名此扩展程序
自:
SiteResources-fr-FR.resx
要:
SiteResources-fr-Fr.old.resx(可能仍会阅读)
尝试更改后者的扩展名,使其完整不是resx文件,如:
SiteResources-fr-Fr.old
现在100%不是resx文件,应该阻止asp.net混淆你想要使用的文件。
希望这能解决你的问题。
答案 1 :(得分:2)
当我在App_GlobalResources文件夹中添加新的自定义文化但忘记注册它时遇到了这个问题。所以我不得不删除文件,在global.asax
中添加以下功能,浏览我网站的随机页面以便代码运行,最后将文件复制回其文件夹。
public static void CreateCulture(string name, string cultureInfo, string regionInfo)
{
try {
CultureAndRegionInfoBuilder.Unregister(name);
} catch { }
var cib = new CultureAndRegionInfoBuilder(name, CultureAndRegionModifiers.None);
cib.LoadDataFromCultureInfo(new CultureInfo(cultureInfo)); // Populate the new CultureAndRegionInfoBuilder object with culture information.
cib.LoadDataFromRegionInfo(new RegionInfo(regionInfo)); // Populate the new CultureAndRegionInfoBuilder object with region information.
cib.Register();
}
在Application_Start
:
CreateCulture("en-gb-custom", "en-gb", "gb")
奖励:不要忘记在以下文件夹中为用户IIS_IUSRS添加完整权限,否则自定义语言将无法注册:
C:\Windows\Globalization
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CustomLocale
答案 2 :(得分:1)
这可能是一个边缘案例,但我们不时在我们的开发环境中遇到这种情况。我们必须在Windows中设置自定义文化以支持en-HK。 Windows 8.1现在支持这种文化,就像Windows 2012 R2一样,但旧机器需要创建文化。任何没有此文化设置的计算机都会报告此错误。解决方案是在机器上创建文化(我们为此目的创建了一个控制台应用程序),一切都重新开始。
上也报告了这个答案答案 3 :(得分:1)
我遇到了一些问题。您应该编写与en-US完全相同的资源文件或您可以从https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx查看的任何国家/地区。 我的意思是你不能像这个en-Us或US-en那样改变字符串类型,因为它是特殊的strign。我希望每个人都能看到你的帮助 在...
答案 4 :(得分:0)
确保只有一个GlobalResources.resx文件。
尝试将GlobalResources.Portal-0.resx
重命名为GlobalResources.Portal-0.old
,因此它现在不是resx文件。
答案 5 :(得分:0)
我需要拥有不同语言的资源。其中一个名字不正确。查看此页面以获取正确的文化名称:https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx
示例名称:
/
- 默认资源SiteResources.resx
- 南非荷兰语资源 - 南非答案 6 :(得分:0)
请确保您使用的区域性名称是有效的区域性名称。
例如:sys.pt-eb
pt-eb
是无效的区域性名称,因此在构建应用程序时会抛出错误。
可以从
检查支持的文化IE浏览器->工具-> Internet选项->语言->添加语言