विधि नहीं मिली: '!! 0 [] System.Array.Empty ()'


123

मैंने VS 2015 RC और MVC टेम्पलेट के साथ एक नया ऐप बनाया और कोड की किसी भी लाइन को संशोधित किए बिना मेरे पास यह त्रुटि है:

Method not found: '!!0[] System.Array.Empty()'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.]
   SAASApp.BundleConfig.RegisterBundles(BundleCollection bundles) in C:\Proyectos\SAASApp\SAASApp\App_Start\BundleConfig.cs:29
   SAASApp.MvcApplication.Application_Start() in C:\Proyectos\SAASApp\SAASApp\Global.asax.cs:18

[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +483
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +350
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +305

[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +661
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +96
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189

पहली बार मेरे साथ ऐसा होता है, इसलिए मैं इस समय फंस गया हूं


जवाबों:


232

मैं उत्पादन सर्वर पर यह स्थिति थी जबकि विकास मशीन पर सब कुछ ठीक था।

लक्ष्य मशीन पर .NET फ्रेमवर्क 4.6 को स्थापित करने से समस्या ठीक हो गई है।


46
पीसी लोड लेटर!
जेरेमी वीयर

9
धन्यवाद। सबसे अधिक संभावना यह है कि क्या हो रहा है: - कोड .NET 4.6 के खिलाफ संकलन है, जहां संदर्भ असेंबलियों में Array.Empty <T> () शामिल है। - रोसलिन कंपाइलर देखता है कि Array.Empty <T> उपलब्ध है और इसलिए इसका उपयोग परमेस के लिए आवश्यक खाली सरणी उत्पन्न करते समय किया जाता है। - संकलित ऐप .NET 4.5 पर चलने की कोशिश कर रहा है जहां Array.Empty बाहर नहीं निकलता है।
वल्कलर

2
हमारे Windows 2008R2 सर्वर को स्थापना के बाद एक बार पुनः आरंभ करना पड़ा।
कार्ल

2
जब उत्तर की तलाश में यह धागा पाया गया जो कुछ और पृष्ठभूमि देता है कि ऐसा क्यों होता है github.com/dotnet/roslyn/issues/4889
Reuven Abliyev

मैंने .net461 स्थापित किया था लेकिन अभी भी वही त्रुटि थी। Net472 स्थापित करने ने मेरे लिए चाल
चली

27

पार्टी में देर से आने के लिए खेद है, लेकिन अगर किसी और को टीमकिट बिल्ड के माध्यम से यह समस्या आती है, तो मैं वर्णन कर सकता हूं कि हमें क्या करना था।

.NET 4.6 हमारे बिल्ड सर्वर (लेकिन एप्लिकेशन सर्वर पर नहीं) पर स्थापित किया गया था, और RunnerType Visual Studio (sln) था और Visual Studio विकल्प 2015 में सेट किया गया था।

इसने बिल्ड को 4.6 का उपयोग करने के लिए मजबूर किया, और मुझे बिल्ड को 4.5.2 का उपयोग करने के लिए मजबूर करने के लिए दृश्य स्टूडियो विकल्प को 2013 में बदलने की आवश्यकता थी


5
मेरे एक अच्छे सहयोगी ने मुझे बताया कि आप विजुअल स्टूडियो 2015 के साथ निर्माण कर सकते हैं यदि आपके बिल्ड एजेंट के पास DotNetFrameworkTargetingPack4.5.2.2_Path टीम की आवश्यकता है, तो समाधान 4.5.2 की ओर बनाएगा, यहां तक ​​कि 4.6 भी स्थापित है
Gautejohan

2
जैसा कि @gman ने सुझाव दिया था, मैंने 4.5.2 देव पैक का उपयोग करके इस समस्या को हल किया। जिन स्थितियों में आप 4.6 स्थापित नहीं करना चाहते हैं, यह एक बेहतर समाधान की तरह लगता है।
डगक

कई सालों के बाद पूछना, यह आपके लिए @Dougc है। मैं एक ऐसी ही स्थिति में हूं, मैं नहीं चाहता कि 4.6 स्थापित हो और मेरे पास 4.5.2 स्थापित हो। फिर भी मुझे यह मुद्दा मिलता है। ऐसा क्या है जो gman ने सुझाव दिया ??
सिंगुयाश

@singsuyash, प्रोजेक्ट कॉन्फ़िगरेशन में, एजेंट आवश्यकताएँ पर जाएँ। वहां आप नई आवश्यकता जोड़ें पर क्लिक करें। पैरामीटर नाम में DotNetFrameworkTargetingPack4.5.2_Path टाइप करें और स्थिति को अस्तित्व में सेट करें।
गौतजोहन

11

इस स्थिति का सामना करने वाले अन्य लोगों के लिए:

यदि आप web.config फ़ाइल में देखते हैं, तो आपको पता चलेगा कि <compilation>टैग में आपके पास targetFramework4.6 से नीचे के संस्करण का मान है । लेकिन वास्तव में, बिल्ड टाइम पर आपने .NET फ्रेमवर्क 4.6 या उससे ऊपर (ASP.NET MVC 4.6 और इसके बाद के संस्करण के माध्यम से) के माध्यम से अपना आवेदन प्रकाशित किया।

इसलिए यदि आप targetFramework4.6 के मान को बदलते हैं तो त्रुटि आकार में बदल जाएगी:

'TargetFramework' विशेषता वर्तमान में एक संस्करण का संदर्भ देती है जो बाद में .NET फ्रेमवर्क के स्थापित संस्करण से है।

यह वास्तविक त्रुटि है और आप अपने वेब ऐप के उत्पादन वातावरण में .Net फ्रेमवर्क के उपयुक्त संस्करण को स्थापित करके इससे छुटकारा पा लेंगे।


हालाँकि, जब आप ऐसा करते हैं, और अनुप्रयोग के निर्माण के दौरान चुने गए प्रोजेक्ट टेम्प्लेट पर निर्भर करता है, यदि आपके पास अंतर्दृष्टि और कोडडोम अनुप्रयोग स्थापित हैं, तो आपको उन्हें अनइंस्टॉल करना पड़ सकता है जैसा मैंने किया था। मुझे एक एरर एरर मिली, जो रोसलिन और माइक्रोसॉफ्ट एप्लीकेशन इनसाइट पर वापस आ गया।
क्लेरेंस

3

.NET फ्रेमवर्क को उसके नवीनतम (4.7.2) में अद्यतन करने से समस्या हल हो गई। समाधान के लिए @Andrey Kovalenko को धन्यवाद।

लेकिन त्रुटि की तरह नहीं होना चाहिए,

यहाँ छवि विवरण दर्ज करें

मुझे यकीन नहीं है कि प्रत्येक ग्राहक अपने .NET फ्रेमवर्क को अपडेट करने के बारे में बता रहा है। मैं विशेष रूप से उत्पादन वातावरण में विंडोज एंबेडेड ओएस स्थापित प्रणाली पर यह मुद्दा था ।

क्या हमारे कोड बेस से, व्यवहार को दूर करने का कोई अन्य तरीका है? "


1
मेरी परियोजना के लिए पुराने .NET फ्रेमवर्क (4.0 क्लाइंट प्रोफाइल) को लक्षित करना और सभी DLL परियोजनाओं ने भी काम किया। :)
नवीन कुमार वी।

2

मैं सफलता के बिना इन समाधान की कोशिश करता हूं।

मेरे लिए समाधान एप्लिकेशन पूल में गया था, 2.0 की ओर मुड़ें, ब्राउज़र पर साइट निष्पादित करें, त्रुटि देखें (क्योंकि संस्करण गलत है) और 4.0 और "वॉइलिया" पर वापस जाएं, मुझे मिल गया, वेबसाइट खुली।


2

हो सकता है कि बहुत देर हो गई हो लेकिन मुझे वही समस्या हुई और नीचे बताई गई। मैं Visual Studio 2015, web.config बिंदु पर विन्यास संकलन का उपयोग .NET फ्रेमवर्क 4.6 डिफ़ॉल्ट रूप से करता हूं । मैं केवल web.config फ़ाइल पर केवल संपादित नहीं कर सका। यदि आप .NET फ़्रेमवर्क 4.6 सर्वर पर स्थापित नहीं कर सकते हैं और आपका एप्लिकेशन इसका उपयोग नहीं करता है।

  1. मेनू> डिबग> [प्रोजेक्ट नाम] गुण> एप्लिकेशन पर जाएं।
  2. लक्ष्य फ़्रेमवर्क ड्रॉपडाउन सूची से .NET फ्रेमवर्क 4.5 (या जो भी सर्वर समर्थन और आपके एप्लिकेशन को संगत करता है) चुनें।
  3. फिर से बनाना।

0

मेरे मामले में, मेरे पास अपने विंडोज सर्वर 2012 R2 पर एक भ्रष्ट .NET इंस्टॉलेशन था। मुझे .NET (v4.7.1) के हाल के संस्करण को स्थापित करना था और साइट अब काम कर रही है।


0

मेरे मामले में, मेरे पास स्वयं IIS नहीं है और मुझे यह समस्या आ रही थी जब मैं एक एकल विधि का उपयोग कर रहा था जिसमें .net 2 से केवल कुछ विशेष चीजें नहीं हैं।

समाधान: मैंने वह तरीका निकाला है और .net 2.0 के साथ एक क्लास लाइब्रेरी बनाई है और यह काम करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.