지난주 보안 업데이트 이후 컴파일에 실패한 오래된 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>
다시 시도했고 동일한 경고를 받았습니다.
내 질문은-여전히 문제가 있습니까? 아니면 경고에도 불구하고 해결할 것인가?