IT TIP

System.web.mvc 누락

itqueen 2020. 10. 13. 19:58
반응형

System.web.mvc 누락


지난주 보안 업데이트 이후 컴파일에 실패한 오래된 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입니다.

그러나 보안 업데이트가 실행 된 dev 컴퓨터에서 솔루션 파일을 열면 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>

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

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


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>

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을 어디에서 찾을 수 있습니까?


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

여기에 이미지 설명 입력

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

또는 Nuget 명령을 사용하여

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

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

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


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


Had this problem in vs2017, I already got MVC via nuget but System.Web.Mvc didn't appear in the "Assemblies" list under "Add Reference".

The solution was to select "Extensions" under "Assemblies" in the "Add Reference" dialog.


In my case I had all of the proper references in my project. I found that by building the solution the nuget packages were automatically restored.


The sample mvcmusicstore.codeplex.com opened in vs2015 missed some references, one of them System.web.mvc.

The fix for this was to remove it from the references and to add a reference: choose Extentions under Assemblies, there you can find and add System.Web.Mvc.

(The other assemblies I added with the nuget packages.)


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

참고 URL : https://stackoverflow.com/questions/26535131/system-web-mvc-missing

반응형