साथ नेट के साथ पेश किया रनटाइम पर 4.6.2 संघर्ष सप्ताह के अंत में, जो .NET फ्रेमवर्क 4.6.2 शामिल अधिक Windows 10 वीं वर्षगांठ अद्यतन स्थापित करने के बाद, कुछ कोड काम करना बंद कर। मैं यह सुनिश्चित करने के लिए 1 सप्ताह पहले एक संस्करण में वापस गया हूं कि यह हमारे कोड से संबंधित नहीं है।System.Web.Globalization नाम स्थान System.Globalization
रनटाइम पर, एक त्रुटि फेंक दिया जाता है:
त्रुटि BC30561: 'वैश्वीकरण' अस्पष्ट है, नामस्थान या प्रकार 'System.Web, प्रणाली' से आयात किया।
स्टैक ट्रेस:
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
के साथ समस्या यह फिक्स की जगह है, लेकिन दृश्य स्टूडियो चलता है कि "नाम सरल किया जा सकता", इंगित करना System
आवश्यक नहीं है।
जब हमलावर लाइन पर एक ब्रेकपाइंट की स्थापना, मैं तत्काल खिड़की के माध्यम से एक ही त्रुटि प्राप्त कर सकते हैं:
Globalization.CultureInfo.CurrentUICulture
error BC30560: 'CultureInfo' is ambiguous in the namespace 'System.Globalization'.
अगर मैं सही ढंग से समझ, वहाँ है System.Globalization
और System.Web.Globalization
दोनों। the API diff के अनुसार, एक नया नाम स्थान पेश किया गया था, जो इस समस्या का कारण बनने लगता है।
+namespace System.Web.Globalization { + public interface IStringLocalizerProvider { + string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); + } + public sealed class ResourceFileStringLocalizerProvider : IStringLocalizerProvider { + public const string ResourceFileName = "DataAnnotation.Localization"; + public ResourceFileStringLocalizerProvider(); + public string GetLocalizedString(CultureInfo culture, string name, params object[] arguments); + } + public static class StringLocalizerProviders { + public static IStringLocalizerProvider DataAnnotationStringLocalizerProvider { get; set; } + } +}
क्यों इस त्रुटि केवल रनटाइम पर दिखाई देता है? मैं इसे संकलित समय में कैसे विफल कर सकता हूं?
लगता है कि अपमानजनक लाइन एएसपीएक्स पृष्ठ में इनलाइन कोड है जो पहले अनुरोध के दौरान संकलित की गई है। आप अपने वेब ऐप को प्रीकंपाइल करने के लिए aspnet_compiler.exe का उपयोग कर सकते हैं और आपको त्रुटि दिखाई देनी चाहिए। – mattfei
वही समस्या जो मुझे मिल रही है। कोड ठीक काम कर रहा था लेकिन वीएस और अन्य सभी चीजों को पुनर्स्थापित करने के बाद, उसने एक ही त्रुटि देनी शुरू कर दी। लेकिन मुझे फ्रेमवर्क 4.5.2 के इंस्टॉलेशन के बाद मिला। क्या आपको समाधान मिला? – par
@par समाधान पूरी तरह से योग्यता प्राप्त करने के लिए है और विजुअल स्टूडियो को अनदेखा करता है जब यह कहता है कि नाम सरलीकृत किया जा सकता है।मुझे लगता है कि अगर आपकी परियोजना 4.6.2 को लक्षित करती है तो भी यह कोई समस्या नहीं है लेकिन मैंने अभी तक कोशिश नहीं की है। – Stijn