Yöntem bulunamadı: '!! 0 [] System.Array.Empty ()'


123

VS 2015 RC ve MVC şablonuyla yeni bir uygulama oluşturdum ve herhangi bir kod satırını değiştirmeden şu hatayı alıyorum:

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

İlk kez başıma geliyor, bu yüzden şu anda sıkışıp kaldım


Yanıtlar:


232

Geliştirme makinesinde her şey yolundayken üretim sunucusunda bu durumu yaşadım.

Hedef makineye .NET Framework 4.6 yüklemek sorunu çözdü.


46
PC YÜKLEME MEKTUBU!
JeremyWeir

9
Teşekkür ederim. Büyük olasılıkla olan şudur: - Kod, başvuru derlemelerinin Array.Empty <T> () içerdiği .NET 4.6'ya karşı derleniyor. - Roslyn derleyicisi Array.Empty <T> 'nin kullanılabilir olduğunu görür ve bu nedenle onu parametreler için gereken boş diziyi oluştururken kullanır. - Derlenen uygulama Array.Empty'nin çıkmadığı .NET 4.5 üzerinde çalışmaya çalışıyor.
wkalter

2
Windows 2008R2 Sunucumuz kurulumdan sonra bir kez yeniden başlatmak zorunda kaldı.
Karl

2
Cevap ararken, bunun neden olduğuna dair biraz daha bilgi veren bu konuyu bulun github.com/dotnet/roslyn/issues/4889
Reuven Abliyev

.Net461'i yükledim ama yine de aynı hatayı aldım. Net472'yi kurmak işimi yaptı
berniefitz

27

Partiye geç kaldığım için özür dilerim, ancak başka birinin bu sorunu bir TeamCity yapısı aracılığıyla alması durumunda, ne yapmamız gerektiğini açıklayabilirim.

.NET 4.6, derleme sunucumuza yüklendi (ancak uygulama sunucumuza yüklenmedi) ve RunnerType, Visual Studio (sln) idi ve Visual Studio seçeneği 2015 olarak ayarlandı.

Bu, derlemeyi 4.6 kullanmaya zorladı ve derlemeyi 4.5.2 kullanmaya zorlamak için Visual Studio seçeneğini 2013 olarak değiştirmem gerekti


5
Benim iyi bir meslektaşım, yapı maddesi gereksinimi DotNetFrameworkTargetingPack4.5.2_Path TeamCity sonra 4.6 yüklü olsa bile 4.5.2 doğru çözümü inşa edecek varsa Visual Studio 2015 ile inşa edebilirsiniz bana işaret
gautejohan

2
@Gman'ın önerdiği gibi 4.5.2 dev paketini kullanarak bu sorunu çözdüm. 4.6'nın yüklenmesini istemediğiniz durumlarda, bu daha iyi bir çözüm gibi görünüyor.
Dougc

Yıllar sonra sormak, bu sizin için @ Dougc. Ben de benzer bir durumdayım, 4.6'nın yüklenmesini istemiyorum ve 4.5.2 yüklüyüm. Yine de bu sorunu alıyorum. Gman'ın önerdiği şey nedir?
2016 9:43

@singsuyash, proje yapılandırmasında Ajan Gereksinimleri'ne gidin. Orada yeni gereksinim ekle'yi tıklayın. Parametre adına DotNetFrameworkTargetingPack4.5.2_Path yazın ve mevcut olması için koşulu ayarlayın.
gautejohan

11

Sadece bu durumla karşı karşıya olan diğerleri için:

web.config dosyasına bakarsanız, <compilation>etikette değerin targetFramework4.6'nın altında bir sürüme ayarlandığını fark edeceksiniz . ancak aslında, derleme zamanında uygulamanızı .NET FrameWork 4.6 veya üstü aracılığıyla yayınladınız (ASP.NET MVC 4.6 ve üstüne karşılık gelir).

Dolayısıyla, değerini targetFramework4.6 olarak değiştirirseniz, hatanın şekli şu şekilde değişir:

"TargetFramework" özniteliği şu anda .NET Framework'ün yüklü sürümünden daha sonraki bir sürüme başvuruyor.

bu gerçek hatadır ve Web Uygulamanızın üretim ortamına .Net FrameWork'ün uygun Sürümünü kurarak bundan kurtulacaksınız.


Ancak, bunu yaptıktan sonra ve uygulama oluşturulduğunda seçilen proje şablonuna bağlı olarak, Insight ve codeDom uygulamalarına sahipseniz, bunları benim yaptığım gibi kaldırmanız gerekebilir. Roslyn ve Microsoft Application Insight'a kadar giden bir dizi hatası aldım.
Clarence

3

.NET Framework'ün en son sürümüne (4.7.2) güncellenmesi sorunu çözdü. Çözüm için @Andrey Kovalenko'ya teşekkürler.

Ama hata şöyle olmamalı,

görüntü açıklamasını buraya girin

Her müşteriye .NET Framework'lerini güncellemelerinin uygulanabilir olduğundan emin değilim. Bu sorunu özellikle Windows Embedded OS kurulu sistemde, sadece üretim ortamında yaşadım .

Davranışın üstesinden gelmenin, kod tabanımızın kendisinden başka bir yolu var mı?


1
Projem ve tüm DLL projeleri için eski .NET Framework'ü (4.0 İstemci Profili) hedeflemek de işe yaradı. :)
Naveen Kumar V

2

Bu çözümü başarılı olmadan deniyorum.

Benim için çözüm, uygulama havuzuna gitmek, 2.0'a geçmek, siteyi tarayıcıda çalıştırmak, hatayı görmek (çünkü sürüm yanlıştır) ve 4.0'a geri dönüp "işte", anladım, web sitesi açıldı.


2

Belki çok geç ama aynı sorunu yaşadım ve aşağıdaki gibi düzelttim. Web.config üzerindeki yapılandırma derlemesi , varsayılan olarak .NET FrameWork 4.6'ya işaret eden Visual Studio 2015 kullanıyorum . Sadece web.config dosyasında düzenleme yapamadım. Sunucuya .NET FrameWork 4.6 yükleyemiyorsanız ve uygulamanız kullanmıyorsa.

  1. Hata Ayıklama> [Proje Adı] Özellikler> Uygulama menüsüne gidin.
  2. Hedef Çerçeve açılır listesinden .NET Framework 4.5'i (veya hangi sunucunun desteklediği ve uygulamanızla uyumlu olduğunu) seçin.
  3. Yeniden oluşturun.

0

Benim durumumda, Windows Server 2012 R2'mde bozuk bir .NET yüklemesi yaptım. Daha yeni bir .NET (v4.7.1) sürümünü yüklemem gerekiyordu ve site şimdi çalışıyor.


0

Benim durumumda, IIS'nin kendisine erişimim yok ve sadece .net 2'den özel bir şey içermeyen tek bir yöntem kullanırken bu sorunu yaşıyordum.

Çözüm: Bu yöntemi çıkardım ve .net 2.0 ile bir Sınıf Kitaplığı oluşturdum ve çalışıyor.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.