2016-08-08 10 views
13

साथ नेट के साथ पेश किया रनटाइम पर 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 %>"); 

GlobalizationSystem.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; } 
+ } 
+} 

क्यों इस त्रुटि केवल रनटाइम पर दिखाई देता है? मैं इसे संकलित समय में कैसे विफल कर सकता हूं?

+0

लगता है कि अपमानजनक लाइन एएसपीएक्स पृष्ठ में इनलाइन कोड है जो पहले अनुरोध के दौरान संकलित की गई है। आप अपने वेब ऐप को प्रीकंपाइल करने के लिए aspnet_compiler.exe का उपयोग कर सकते हैं और आपको त्रुटि दिखाई देनी चाहिए। – mattfei

+0

वही समस्या जो मुझे मिल रही है। कोड ठीक काम कर रहा था लेकिन वीएस और अन्य सभी चीजों को पुनर्स्थापित करने के बाद, उसने एक ही त्रुटि देनी शुरू कर दी। लेकिन मुझे फ्रेमवर्क 4.5.2 के इंस्टॉलेशन के बाद मिला। क्या आपको समाधान मिला? – par

+0

@par समाधान पूरी तरह से योग्यता प्राप्त करने के लिए है और विजुअल स्टूडियो को अनदेखा करता है जब यह कहता है कि नाम सरलीकृत किया जा सकता है।मुझे लगता है कि अगर आपकी परियोजना 4.6.2 को लक्षित करती है तो भी यह कोई समस्या नहीं है लेकिन मैंने अभी तक कोशिश नहीं की है। – Stijn

उत्तर

3

हम "भूमंडलीकरण।" हटा और विजुअल स्टूडियो को एक फिक्स का प्रस्ताव दें। हमने "आयात प्रणाली। ग्लोबलाइजेशन" चुना है जो इसे हमारे लिए फ़ाइल में जोड़ा गया है।

यह त्रुटि से छुटकारा मिला और साइट ठीक काम करता है।

+1

के साथ एक ही समस्या थी, मुझे एक फिक्स का प्रस्ताव देने के लिए वीएस नहीं मिल सकता है, कोई त्वरित क्रियाएं उपलब्ध नहीं हैं। – Stijn

6

बग क्रशर के जवाब सही है। उत्तर में Stijn की टिप्पणी को संबोधित करने के लिए, बस "ग्लोलाइजेशन" के लिए अपनी परियोजना खोजें। और इसके हर उदाहरण को हटा दें। मैं ऐसा करने के लिए Find + Replace का उपयोग नहीं करता क्योंकि इसमें अनपेक्षित साइड इफेक्ट्स हो सकते हैं।

फिर सुनिश्चित करें कि आपके द्वारा संपादित की गई प्रत्येक फ़ाइल में सही आयात या शीर्ष पर कथन का उपयोग करना है।

VB- आयात System.Globalization

सी # - System.Globalization उपयोग करते हुए;

ठीक वी.एस. है कि प्रस्तावित किए हैं जाएगा।

संबंधित मुद्दे