메서드를 찾을 수 없음 : '!! 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 Framework 4.6을 설치하면 문제가 해결되었습니다.


46
PC로드 레터!
JeremyWeir

9
감사합니다. 대부분의 상황은 다음과 같습니다.-참조 어셈블리에 Array.Empty <T> ()가 포함 된 .NET 4.6에 대해 코드가 컴파일되고 있습니다. -Roslyn 컴파일러는 Array.Empty <T>를 사용할 수 있음을 확인하고 매개 변수에 필요한 빈 배열을 생성 할 때이를 사용합니다. -컴파일 된 앱이 Array.Empty가 종료되지 않는 .NET 4.5에서 실행하려고합니다.
wkalter

2
Windows 2008R2 Server는 설치 후 한 번 다시 시작해야했습니다.
Karl

2
대답을 찾을 때이 왜 좀 더 배경을 제공이 스레드를 어떻게됩니까 발견 github.com/dotnet/roslyn/issues/4889
르우벤 Abliyev

.net461을 설치했지만 여전히 동일한 오류가 발생했습니다. 설치 net472 나를 위해 속임수를 썼는지
berniefitz

27

파티에 늦어서 미안하지만 다른 사람이 TeamCity 빌드를 통해이 문제를 겪게 될 경우 우리가해야 할 일을 설명 할 수 있습니다.

.NET 4.6은 빌드 서버 (애플리케이션 서버가 아님)에 설치되었고 RunnerType은 Visual Studio (sln)이고 Visual Studio 옵션은 2015로 설정되었습니다.

이로 인해 빌드가 4.6을 사용하게되었고 빌드가 4.5.2를 사용하도록 강제하려면 Visual Studio 옵션을 2013으로 변경해야했습니다.


5
제 동료는 빌드 에이전트에 DotNetFrameworkTargetingPack4.5.2_Path 요구 사항이있는 경우 Visual Studio 2015로 빌드 할 수 있다고 지적했습니다. 그러면 TeamCity가 4.6이 설치되어 있어도 4.5.2에 대한 솔루션을 빌드 할 것입니다.
gautejohan

2
@gman이 제안한대로 4.5.2 dev pack을 사용하여이 문제를 해결했습니다. 4.6을 설치하고 싶지 않은 상황에서는 이것이 더 나은 솔루션 인 것 같습니다.
Dougc 2016 년

수년 후 묻자, 이것은 @Dougc입니다. 나는 비슷한 상황에 처해 있는데 4.6을 설치하고 싶지 않고 4.5.2를 설치하고 있습니다. 여전히이 문제가 발생합니다. gman이 제안한 것은 무엇입니까 ??
singsuyash

@singsuyash의 프로젝트 구성에서 에이전트 요구 사항으로 이동합니다. 여기에서 새 요구 사항 추가를 클릭합니다. 매개 변수 이름에 DotNetFrameworkTargetingPack4.5.2_Path를 입력하고 조건이 존재하도록 설정합니다.
gautejohan apr

11

이 상황에 직면 한 다른 사람들을 위해 :

web.config 파일을 보면 <compilation>태그에 값 이 있음을 알 수 있습니다.targetFramework 4.6 미만으로 설정되어 . 그러나 실제로 빌드시 .NET FrameWork 4.6 이상 (ASP.NET MVC 4.6 이상에 해당)을 통해 애플리케이션을 게시했습니다.

따라서 값 targetFramework을 4.6으로 변경하면 오류 모양이 다음과 같이 변경됩니다.

'targetFramework'특성은 현재 설치된 .NET Framework 버전보다 이후 버전을 참조합니다.

이것은 실제 오류이며 Web App의 프로덕션 환경에 적절한 버전의 .Net FrameWork를 설치하여 제거합니다.


그러나이 작업을 수행 한 후 응용 프로그램을 만들 때 선택한 프로젝트 템플릿에 따라 insight 및 codeDom 응용 프로그램이 설치되어 있으면 내가 한 것처럼 제거해야 할 수도 있습니다. roslyn 및 Microsoft Application Insight로 거슬러 올라가는 배열 오류를 받았습니다.
Clarence

3

.NET Framework를 최신 (4.7.2)으로 업데이트하면 문제가 해결되었습니다. 솔루션을 위해 @Andrey Kovalenko에게 감사드립니다.

그러나 오류가 다음과 같아서는 안됩니다.

여기에 이미지 설명 입력

각 고객에게 .NET Framework 업데이트가 적용 가능하다고 말하는지 잘 모르겠습니다. 특히 프로덕션 환경에서만 Windows Embedded OS가 설치된 시스템 에서이 문제가 발생했습니다 .

코드베이스 자체에서 동작을 극복 할 수있는 다른 방법이 있습니까?


1
내 프로젝트 및 모든 DLL 프로젝트에 대해 이전 .NET Framework (4.0 Client Profile) 를 대상으로 지정하는 것도 작동했습니다. :)
Naveen Kumar V

2

나는 성공하지 않고 이러한 솔루션을 시도합니다.

저를위한 해결책은 응용 프로그램 풀로 이동하여 2.0으로 설정하고 브라우저에서 사이트를 실행하고 오류를 확인하고 (버전이 잘못 되었기 때문에) 4.0으로 돌아가 "voilà"로 돌아가서 웹 사이트를 열었습니다.


2

너무 늦었을 수도 있지만 동일한 문제가 발생하여 아래와 같이 수정되었습니다. Web.config 의 구성 컴파일 은 기본적으로 .NET FrameWork 4.6을 가리키는 Visual Studio 2015를 사용 합니다. web.config 파일에서만 편집 할 수는 없습니다. 서버에 .NET FrameWork 4.6을 설치할 수없고 응용 프로그램에서 사용하지 않는 경우.

  1. 디버그> [프로젝트 이름] 속성> 응용 프로그램 메뉴로 이동합니다.
  2. 대상 프레임 워크 드롭 다운 목록에서 .NET Framework 4.5 (또는 응용 프로그램을 지원하고 호환되는 서버)를 선택합니다.
  3. 다시 재건하십시오.

0

제 경우에는 Windows Server 2012 R2에 손상된 .NET 설치가있었습니다. 최신 버전의 .NET (v4.7.1)을 설치해야했고 사이트가 현재 작동 중입니다.


0

제 경우에는 IIS 자체에 대한 액세스 권한이 없으며 .net 2에서만 특별한 것이없는 단일 방법을 사용할 때이 문제가 발생했습니다.

해결책 : 그 방법을 추출하고 .net 2.0으로 클래스 라이브러리를 만들었고 작동합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.