【发布时间】:2014-07-31 08:45:55
【问题描述】:
好的,由于某种原因,我的 resx 文件有问题,我有这个错误
命名空间“Resources”已包含“SiteResources”的定义
所有文件都在 App_GlobalResources 中,但我不断收到此错误
任何指针
【问题讨论】:
-
@DGibbs 看起来只是我的文件名,我有 3 个旧的西班牙文文件,我没有在 VS 中显示
好的,由于某种原因,我的 resx 文件有问题,我有这个错误
命名空间“Resources”已包含“SiteResources”的定义
所有文件都在 App_GlobalResources 中,但我不断收到此错误
任何指针
【问题讨论】:
即使您将它们隐藏在 Visual Studio 中,它也有可能试图读取名称相似的文件,
如果在GlobalResources 中您有多个文件,请尝试像这样重命名扩展名
发件人:
SiteResources-fr-FR.resx
到:
SiteResources-fr-Fr.old.resx(可能仍会被读取)
尝试更改后者的扩展名,使其完全不是 resx 文件,例如:
SiteResources-fr-Fr.old
这将 100% 现在不是 resx 文件,并且应该停止 asp.net 混淆您希望使用的文件。
希望这能解决您的问题。
【讨论】:
当我在 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
【讨论】:
这可能有点极端,但我们在开发环境中时常遇到这种情况。我们必须在 Windows 中设置自定义文化以支持 en-HK。 Windows 8.1 现在像 Windows 2012 R2 一样原生支持这种文化,但旧机器需要创建这种文化。任何没有此区域性设置的机器都会报告此错误。解决方案是在机器上创建文化(我们为此创建了一个控制台应用程序),然后一切都重新开始工作。
【讨论】:
我遇到了一些问题。你应该像那个 en-US 或任何你可以从这个https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx 检查的国家/地区一样编写资源文件 我的意思是您不能像这样 en-Us 或 US-en 更改字符串类型,因为它是特殊字符串。希望对大家有帮助
【讨论】:
确保只有一个 GlobalResources.resx 文件。
尝试将 GlobalResources.Portal-0.resx 重命名为 GlobalResources.Portal-0.old,这样它现在就不是 resx 文件了。
【讨论】:
我需要有不同语言的资源。其中一个名字不正确。检查此页面以获取正确的文化名称:https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx
示例名称:
SiteResources.resx - 默认资源SiteResources.af-AZ.resx - 南非语资源 - 南非【讨论】:
确保您使用的文化名称是有效的文化名称。
例如:sys.pt-eb
pt-eb 不是有效的区域性名称,因此在构建应用程序时会引发错误。
可以从
中检查支持的文化IE-浏览器 -> 工具 -> Internet 选项 -> 语言 -> 添加语言
【讨论】: