System.web.mvc 누락


89

지난주 보안 업데이트 이후 컴파일에 실패한 오래된 ASP.NET MVC 3 웹 응용 프로그램이 VS2010에서 빌드되었습니다.

문제는 System.Web.Mvc.dll에 대한 참조가 손상되었다는 것입니다.

보안 업데이트가 실행되지 않은 빌드 시스템에서 솔루션 파일을 열고 References-> System.Web.MVC에 대한 속성 대화 상자를 열면 괜찮아 보입니다.

경로는 C : \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll 버전은 3.0.0.0입니다.

그러나 보안 업데이트가 실행 된 개발 컴퓨터에서 솔루션 파일을 열면 References-> System.Web.MVC가 누락 된 것으로 플래그가 지정됩니다. 제거하고 VS2010의 참조 추가 대화 상자를 사용하여 다시 추가하려고하면 표시되지 않습니다.

웹을 돌아 다니면서 NuGet을 사용하여 MVC를 업데이트하는 것과 관련된 제안을 받았습니다. VS2010 프로젝트에서 NuGet을 사용하지 않았기 때문에이 상황에서는 그다지 옳지 않은 것 같습니다. 어쨌든 시도해 보았지만 6 개의 참조가 누락되었습니다.

Windows 탐색기에서 "C : \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll"의 속성을 보면 빌드 컴퓨터에서 버전 3.0.0.0이 표시됩니다.

dev 컴퓨터의 속성을 보면 3.0.50813.1 버전이 표시됩니다.

내가 필요한 것은 .NET 3.0 프레임 워크에 설치된이 두 DLL 중 어느 것이 든 빌드하고 실행할 수 있도록 빌드 및 실행 방식을 변경하는 방법입니다.

아이디어?

작동하지 않는 내가 시도한 것

첫 번째 시도-어셈블리가없는 경우 추가합니다. 누락 된 이전 참조를 삭제했습니다. 그런 다음 "ASP.NET MVC3 \ Assemblies"폴더에서 내 프로젝트의 폴더로 DLL을 복사했습니다. "항상 복사"로 설정하고 참조로 추가합니다.

이를 통해 프로젝트는 VS2010에서 컴파일되지만 aspnet_compiler로 페이지를 미리 컴파일하려고 할 때 경고가 표시됩니다.

(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy

지금까지 런타임 정책을 이해하지 않도록 관리 할 수 ​​있었지만 web.config에 이것을 추가하려고했습니다.

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

다시 시도했고 동일한 경고를 받았습니다.

내 질문은-여전히 문제가 있습니까? 아니면 경고에도 불구하고 해결할 것인가?


모든 너겟 패키지를 최신 버전으로 업데이트 해 보셨습니까 (물론 가능한 경우)?
Silvermind

1
당신이에 실행하는 경우 궁금 MS14-059 업데이트 버그 ...
스티븐 V

1
웹앱에는 너겟 패키지가 없습니다. 네, 그것은 MS14-059 버그입니다.
Jeff Dege 2014 년

대신 nuget 패키지와 버전 4를 사용하고 있지만 동일한 문제가 발생했습니다. 잘 컴파일되고 모두 작동하지만 제거하고 싶은 20 개 이상의 컴파일 경고가 있습니다.
Farinha 2014 년

답변:


141

NuGet을 통해 최신 버전의 MVC3를 가져옵니다. Dev Studio에서 프로젝트를 엽니 다. Dev Studio 하단에서 Package Manager Console 탭을 엽니 다. 그런 다음 다음 명령을 사용하십시오.

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

"-Version"뒤에있는 탭 키를 클릭하면 사용 가능한 모든 버전의 목록이 표시됩니다.

이전 버전의 NuGet이있는 경우 업그레이드해야한다는 오류가 표시 될 수 있습니다. 그렇다면 도구-> 확장 관리자를 열어 최신 버전의 NuGet을 설치합니다. NuGet을 설치하기 전에 Dev Studio를 관리자로 실행해야합니다.

MVC3를 설치하면 프로젝트의 Web.config가 업데이트됩니다.

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

1
Badabing !!!! 이것에 몇 시간을 보냈습니다 ... Nuget pm에 버전을 설치하기에 충분히 간단합니다 .... 다발 감사합니다 !!!
Squ1rr3lz

예, Nuget은 Visual Studio 2010에서 작동합니다. Extension Manager를 통해 설치하기 만하면됩니다. 도구 메뉴에서.
3spot

2
Install-Package Microsoft.AspNet.Mvc가 문제를 해결합니다. 우리가 정말 버전 번호 언급 할 필요가 없습니다
sujay kodamala

2
@sujaykodamala MVC5 (패키지의 최신 버전)가 아닌 최신 MVC3를 설치하려는 경우 버전 번호 설정이 중요합니다.
3spot

Install-Package Microsoft.AspNet.Mvc -Project ProjectName -Reinstall보다 명시 적이며 해당 프로젝트에 대한 버전을 설치하고 원하는 경우 다른 프로젝트를 건드리지 못하게합니다.
Mike E

30

MVC 5

C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Stack 5 \ Packages \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll

MVC 4

C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll

MVC 3

C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll

MVC 2

C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll

MVC 3이 설치된 시스템에서 System.Web.MVC dll을 어디에서 찾을 수 있습니까?


덕분에 2018 년 VS2010을 대상으로하는 프로젝트를 열 수
있었습니다.

23

이 문제를 해결하는 가장 쉬운 방법은 웹 플랫폼 설치 관리자에서 ASP.NET MVC 3을 설치하는 것입니다.

여기에 이미지 설명 입력

http://www.microsoft.com/web/downloads/

또는 Nuget 명령을 사용하여

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

1
이렇게하면 새 PC로 전환하고 새 컴퓨터에 아직 설치하지 않은 ASP.NET MVC 4 dll에 대한 참조가있는 프로젝트가있는 후 발생한 문제가 해결되었습니다.
clovola

3

VS 2017에서 솔루션을 청소하고 다시 빌드하여 수정했습니다.


2

동일한 상황이 있습니다. Visual Studio 2010, NuGet이 설치되지 않았으며 System.Web.Mvc 버전 3을 사용하는 ASP.NET 응용 프로그램이 있습니다.

나를 위해 일한 것은 System.Web.Mvc를 사용하는 각 C # 프로젝트를 설정하고 솔루션 탐색기의 참조로 이동하고 System.Web.Mvc의 속성을 로컬 복사를 true로 설정하고 특정 버전을 false로 설정하는 것이 었습니다. 마지막으로 버전 필드에 해당 컴퓨터의 현재 버전이 표시되었습니다.


1

vs2017에서이 문제가 발생하면 이미 nuget을 통해 MVC를 얻었지만 System.Web.Mvc는 "참조 추가"의 "어셈블리"목록에 나타나지 않았습니다.

해결책은 "참조 추가"대화창의 "어셈블리"에서 "확장"을 선택하는 것이 었습니다.


0

제 경우에는 프로젝트에 모든 적절한 참조가있었습니다. 솔루션을 빌드하면 너겟 패키지가 자동으로 복원된다는 것을 알았습니다.


0

vs2015에서 열린 샘플 mvcmusicstore.codeplex.com에는 System.web.mvc 중 하나 인 일부 참조가 누락되었습니다.

이에 대한 수정 사항은 참조에서이를 제거하고 참조를 추가하는 것입니다. 어셈블리 아래에서 확장 을 선택 하면 System.Web.Mvc를 찾아 추가 할 수 있습니다.

(너겟 패키지로 추가 한 다른 어셈블리입니다.)


0

누군가가 같은 오류가 발생하는 위치에있는 경우를 대비하여. 제 경우에는 Microsoft.AspNet.Mvc를 다운 그레이드 한 다음 다시 업그레이드하는 것이 도움이되었습니다. Glimpse를 설치하고 제거한 후에이 문제가 발생했습니다. System.Web.Mvc는 어떻게 든 잘못된 참조였으며 솔루션을 청소하거나 다시 빌드했지만 제 경우에는 작동하지 않았습니다. 위의 답변 중 어느 것도 효과가 없으면 시도해보십시오.


0

./packages/Microsoft.AspNet.Mvc. [버전] /lib/net45/System.Web.Mvc.dll에서 참조를 다시 추가하십시오.

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