Windows 업데이트로 인해 MVC3 및 MVC4 작동이 중지됨


126

내가 10 월 15 일에 Windows Update (8.1)를 설치 한 유일한 사람이며이 경고로 인해 갑자기 MVC가 작동을 멈 춥니 다.

경고 1이 참조를 해결할 수 없습니다. 어셈블리 "System.Web.Mvc, 버전 = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL"을 찾을 수 없습니다. 디스크에 어셈블리가 있는지 확인하십시오. 코드에이 참조가 필요한 경우 컴파일 오류가 발생할 수 있습니다.

이 Windows 업데이트는 버전 번호 4.0.0.1의 최신 MVC 버전을 설치하고 프로그램 파일 폴더에서 이전 버전을 제거하는 것으로 보입니다.

누군가 각 프로젝트를 크롤링하지 않고이 문제를 해결하는 방법을 알고 있습니까?


참조는 어디에서 왔습니까? GAC? 참조 어셈블리 또는 너겟?
— blowdart

1
문제에 대한 Microsoft 블로그 를 읽으십시오 . ( 더 많은 가시성을 얻기 위해 댓글을 달아 주는 e4rthdog 에게 감사드립니다 )
— Hanna



1
프로덕션 환경에서도 web.config를 편집해야합니다.
— 선장 켄 파치

답변:


107

가장 좋은 해결책은 DLL을 버전 4.0.0.1로 업데이트하는 것입니다. 너겟을 사용해보십시오.

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

이것은 자동으로 업데이트됩니다

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

다음에서 버전 System.Web.Mvc를 수동으로 편집해야합니다.

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />


1
그래, GAC 참조를 NuGet 참조로 바꾸십시오. 우리를 위해 일했습니다.
— abatishchev

7
문제에 대한 Microsoft 블로그 를 읽으십시오 . ( 더 많은 가시성을 얻기 위해 댓글을 달아 주면 e4rthdog 에게 감사드립니다 )
— Hanna

10
"ASPNETCOMPILER : warning CS1702 : 어셈블리 참조 'System.Web.Mvc, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'가 ' System.Web.Mvc, Version = 4.0.0.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ', 런타임 정책을 제공해야 할 수도 있습니다 "?
— Farinha

1
@ Farinha, 나는 같은 경고가 있습니다. 나는 그들을 멀리 얻을 수 없습니다. 이 경고는 빌드 성능을 저하시킵니다. 이 문제를 해결하는 방법을 찾았습니까?
— StefanHa

3
@StefanHa가 없습니다. 아직 해결책을 찾지 못했습니다. 응용 프로그램 전체에서, Views 폴더 내의 Web.config 파일에서 4.0.0.0에 대한 참조가 많이 있음을 알았지 만 수동으로 변경 한 후에도 경고가 남아 있습니다.
— Farinha

26

빌드를 진행 하려면 각 .csproj 를 수동으로 터치 하여 버전을 4.0.0.0 에서 4.0.0.1 로 업데이트해야했습니다 . 꽤 아.니다.

새로운 참조는 다음과 같아야합니다.

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

3
MVC 3.0에 대해서도 동일한 변경이 필요합니다. 참조가 "3.0.0.1"이어야 다시 작동 할 수 있습니다.
— Andy

제 경우에는 이것이 필요했으며 "특정 버전"이 "참"
— 임을 나타내야합니다.

24

업데이트 후 동일한 문제가 발생했습니다.

Microsoft ASP.NET MVC 4.0 용 보안 업데이트 (KB2993928)
http://support.microsoft.com/kb/2993928

그러나 패키지로 설치되지 않은 System.Web.Mvc를 참조하는 프로젝트에만 해당됩니다.

Microsoft ASP.NET MVC 4.0 Runtime을 설치하지 않았고 업데이트를받지 못한 동료는 문제가 없었으며 4.0.0.1이 아닌 4.0.0.0에

대한 참조를 수동으로 참조를 4.0.0으로 변경했습니다. . 1 , 체크인 후에도 동료가 4.0.0을 참조하여 빌드 할 수 있습니다. 0 .
(Win7 Pro SP1, VS2013 Pro 업데이트 3에서 모두 작동)


22

이 블로그를 참조하십시오. 권장되는 방법은 해당 NuGet 패키지를 업데이트하는 것입니다.

http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

인용 :

다음 솔루션 중 하나를 구현하여 문제점을 해결할 수 있습니다.

  1. (권장) NuGet 갤러리에서 Microsoft.AspNet.Mvc를 설치합니다 (web.config에 바인딩 리디렉션이 설치됨). NuGet 패키지 관리자 또는 Visual Studio의 NuGet 콘솔에서이 작업을 수행 할 수 있습니다.

    설치 패키지 Microsoft.AspNet.Mvc-버전 -Project PROJECTNAME

    MVC 4 버전 : 4.0.40804.0

    MVC 3 버전 : 3.0.50813.1

  2. System.Web.MVC.dll에 대한 참조를 수동으로 업데이트하십시오 (GAC에서 참조를 사용하지 마십시오).

    참조 추가-> 어셈블리-> 확장 대화 상자를 사용해보십시오.



4

웹 프로젝트의 경우 web.config에서 구성을 업데이트해야 할 수도 있습니다.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
  </dependentAssembly>

2

솔루션 내에서 모든 참조를 System.Web.Mvc로 변경해야합니다. 그냥 삭제하고 새로운 4.0.0.1 버전을 추가하십시오.

또한 속성 copy local에서 true로 변경하십시오 .

그리고 web.config에서 새 버전의 mvc를 가리 키도록 assambly 바인딩을 추가하십시오.

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

설정 CopyLocal=true은 우리에게 도움이되지 않았습니다. 참조 : MS14-059 이후 폴더로 System.Web.MVC복사되지 않음bin
— Danny Tuppeny

1

괜찮아,

나를 위해 그것은 두 가지 간단한 단계였습니다.

먼저 System.Web.Mvc에 대한 모든 참조를 4.0.0.0에서 4.0.0.1로 변경했습니다.

그런 다음 System.Web.Mvc의 속성으로 이동하여 (제거하고 다시 추가했기 때문에) 복사본을 로컬로 true로 변경해야했습니다.

이것이 누군가에게 도움이되기를 바랍니다.


0

@Krzysztof 솔루션 또는 위의 다른 답변을 시도한 후에도 여전히 같은 오류가 발생하면 MVC 런타임 4.0 을 제거하는 것이 좋습니다.

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