在周末安装Windows 10周年更新(其中包括.NET Framework4.6.2)之后,一些代码停止工作。我回到了一个1周前的版本,以确保它与我们的代码无关。
在运行时,引发一个错误:
错误BC30561:“全球化”是模棱两可的,从名称空间或类型'System.Web,System‘导入。
堆栈跟踪:
System.Web.HttpCompileException (0x80004005): C:\path\to\project\MasterPages\SiteMaster.master(71): error BC30561: 'Globalization' is ambiguous, imported from the namespaces or types 'System.Web, System'.
at System.Web.Compilation.BuildManager.PostProcessFoundBuildResult(BuildResult result, Boolean keyFromVPP, VirtualPath virtualPath)
at System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean ensureIsUpToDate)
at System.Web.UI.BaseTemplateParser.GetReferencedType(VirtualPath virtualPath, Boolean allowNoCompile)
at System.Web.UI.PageParser.ProcessMainDirectiveAttribute(String deviceName, String name, String value, IDictionary parseData)
at System.Web.UI.TemplateParser.ProcessMainDirective(IDictionary mainDirective)这是一句冒犯的话:
$.SetLanguage("<%= Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName %>");用Globalization替换System.Globalization解决了这个问题,但是Visual建议“名称可以简化”,这表明System是不必要的。
当在违规行设置断点时,我可以通过即时窗口获得相同的错误:
Globalization.CultureInfo.CurrentUICulture
error BC30560: 'CultureInfo' is ambiguous in the namespace 'System.Globalization'.如果我理解正确的话,就会有System.Globalization和System.Web.Globalization。根据the API diff的说法,引入了一个新的命名空间,这似乎导致了这个问题。
+命名空间System.Web.Globalization {+公共接口IStringLocalizerProvider {+ string GetLocalizedString(CultureInfo区域性,字符串名称,params object[]参数);+} +公共密封类ResourceFileStringLocalizerProvider : IStringLocalizerProvider {+ public const string ResourceFileName = "DataAnnotation.Localization";+ public ResourceFileStringLocalizerProvider();+公共字符串GetLocalizedString(CultureInfo区域性,字符串名,params object[]参数);+}+公共静态类StringLocalizerProviders {+ public StringLocalizerProviders{ get;set;}+}+}
为什么这个错误只出现在运行时?如何使它在编译时失败?
发布于 2016-09-23 23:21:13
破碎机的答案是正确的。要回答Stijn的评论,只需搜索您的项目中的“全球化”即可。并移除它的每一个实例。我不会使用Find +替换来做这件事,因为这可能会产生意外的副作用。
然后确保您编辑的每个文件顶部都有正确的导入或使用语句。
VB- Imports System.Globalization
C#- using System.Globalization;
这就是VS会提出的解决方案。
发布于 2016-08-09 19:05:03
我们消除了“全球化”。然后让Visual提出一个修复方案。我们选择了“导入System.Globalization”,它为我们添加到文件中。
这消除了错误和网站的工作正常。
https://stackoverflow.com/questions/38828248
复制相似问题