C #, Visual Studio 2010 사용
MSDN에 문서화 된 System.Web.Mvc 라는 네임 스페이스가 있습니다 . 해당 네임 스페이스의 모든 유형에 대한 설명서에는 해당 유형이 있습니다 System.Web.Mvc.dll
.
그러나 참조 추가,“.NET”탭으로 이동하면이 어셈블리가 목록에서 누락됩니다. 왜?
C #, Visual Studio 2010 사용
MSDN에 문서화 된 System.Web.Mvc 라는 네임 스페이스가 있습니다 . 해당 네임 스페이스의 모든 유형에 대한 설명서에는 해당 유형이 있습니다 System.Web.Mvc.dll
.
그러나 참조 추가,“.NET”탭으로 이동하면이 어셈블리가 목록에서 누락됩니다. 왜?
답변:
VS Express 2012에서는 "어셈블리"탭에서 System.Web.Mvc를 찾을 수 없었지만 약간의 검색 후 기본 "어셈블리 \ 프레임 워크"대신 " 어셈블리 \ 확장자 "탭 을 찾아야한다는 것을 알았습니다. " 탭.
Could not load file or assembly...The located assembly's manifest definition does not match the assembly reference
) 과 관련된 런타임 오류가 발생했습니다 . 솔루션에 다른 버전을 참조하는 다른 프로젝트가 있으며이 방법을 사용하면 System.Web.Mvc, Version = 4.0.0.0에 대한 참조 만 추가 할 수 있습니다. NuGet 설치 방법이 올바른 버전을 추가했습니다
가장 좋은 방법은 NuGet 패키지 관리자를 사용하는 것입니다.
아래 MVC 패키지를 업데이트하면 작동합니다.
같은 문제가 발생하여 System.Web.MVC 참조 어셈블리를 찾을 수 없었습니다.
마지막으로 발견하고 다음 위치에 있습니다.
VS가 C에 설치된 경우 : (때때로 MVC.dll이 모두가 말하는 기본 위치에 있지 않은 경우, " 참조 어셈블리를 의미합니다. 경우 C : 드라이브에 "폴더를 .)
거기에 없다면 분명히 여기에 있어야합니다.
\ 프로그램 파일 (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll
따라서 참조 추가 메뉴의 탐색 또는 찾아보기 탭을 통해 dll을 추가하십시오.
Nuget 패키지 관리자 콘솔에서 다음과 같이 추가 할 수도 있습니다.
Install-Package Microsoft.AspNet.Mvc -Version 4.0.20710.0 -ProjectName XXXXX
Microsoft.AspNet.Mvc는 다음에 의존합니다.
... 나에게 큰 문제가 아닌 것 같습니다. 우리의 경우, 이것은 Mvc 앱을 지원하기 위해 존재하는 클래스 라이브러리입니다. 그래서 우리는 그것이 최악의 양성 의존성이라고 생각합니다.
앞으로 패키지를 업데이트하는 것이 과거에 GAC 및 파일 시스템 어셈블리 참조에 대한 경험보다 훨씬 덜 고통 스러울 것이기 때문에 파일 시스템 또는 GAC의 어셈블리를 가리키는 것이 좋습니다.
나는 똑같은 문제를 겪었고 여기에 재미있는 이유 System.Web.Mvc
가 있습니다 System.Web
. 그러나이 목록은 알파벳순이 아닙니다.
먼저 목록을 정렬 한 다음 근처를 살펴보십시오 System.Web
.
"OK. Web.config에 해당 XML을 추가해도 작동하지만 질문에 대답하지 않습니다."
거기 있어야합니다. 기본적으로 추가 참조 목록은 정렬 된 것으로 보이지만 그렇지 않습니다. 이름 헤더를 누르고 다시 찾으십시오.
다음 단계를 확인하십시오.
참고 : 대상 프레임 워크가 .Net Framework 4 Client Profile로 설정되어 있으면 참조 목록에 MVC 참조가 나열되지 않습니다. .Net Framework 4와 .Net Framework 4 Client Profile은 여기에서 다릅니다 .
.NET Framework 4 Client Profile은 클라이언트 응용 프로그램에 최적화 된 .NET Framework 4의 하위 집합입니다. WPF (Windows Presentation Foundation), Windows Forms, WCF (Windows Communication Foundation) 및 ClickOnce 기능을 포함한 대부분의 클라이언트 응용 프로그램에 대한 기능을 제공합니다. 이를 통해 .NET Framework 4 Client Profile을 대상으로하는 응용 프로그램을보다 빠르게 배포하고 설치 패키지를 줄일 수 있습니다.
원하는 어셈블리가 이제 목록에 나타납니다.
나는 그것이 나타나는 원인을 추측 할 수 있지만 파일 → 새로 만들기 → 프로젝트 → ASP.NET 웹 응용 프로그램으로 간 적이 있다고 생각합니다. 이로 인해 일종의 늦은 초기화가 발생하고 목록에 웹 개발을위한 추가 어셈블리가 채워질 수 있습니다.
이것은 Visual Studio 2012에서 변경되었습니다 (원래 질문은 VS2010이라고 말하지만 제목은 여전히 검색에서 나옵니다).
VS2012 MVC 프로젝트를 만들면 system.web.mvc가 솔루션의 피어 인 패키지 폴더에 배치됩니다. 이것은 기본적으로 웹 프로젝트에서 참조되며 정확한 경로를 찾을 수 있습니다).
보조 프로젝트 (예 : 필터 또는 기타 속성이있는 지원 .dll)에서이를 참조하려는 경우 여기에서 참조 할 수 있습니다.
VS 2012에서 System.Web.Mvc를 얻지 못했지만 VS 2013에서 얻었습니다. AddReference 대화 상자를 사용하여
또는 프로젝트 경로에서 찾을 수 있습니다.
YourProjectName \ packages \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll
MVC 어셈블리는 프로젝트 자체가 아닌 web.config 파일에서 참조된다고 생각합니다.
이 같은:
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
귀하의 의견에 답변하기 위해;
내가 줄 수있는 가장 좋은 대답은 다음과 같습니다 .
add 요소는 동적 리소스를 컴파일하는 동안 사용할 어셈블리 참조를 추가합니다. ASP.NET은 각 코드 모듈을 컴파일 할 때이 어셈블리를 자동으로 리소스에 연결합니다.
별도로 설치할 수 있으며 프레임 워크에 포함되어 있지 않으며 탭 목록 "extensions"를 선택하면 더 많은 다른 라이브러리가 있으며 오래된 라이브러리를 사용하는 데 필요하지 않습니다. 예전 20 30 및 4001
Visual Studio 2017에서이 문제가 발생하면 이전 버전의 VS에서 만든 MVC 4 프로젝트를 참조 힌트 경로가 가리키는 것으로 사용하고있을 가능성이 있습니다 C:\Program Files (x86)\Microsoft ASP.NET
. Visual Studio 2017은이 디렉토리를 더 이상 설치하지 않습니다.
일반적으로 2017 인스턴스와 함께 Visual Studio 2015 사본을 설치하면 위의 경로에 필요한 라이브러리가 설치됩니다. 그런 다음 영향을받는 프로젝트의 모든 참조를 업데이트하고 계속 진행합니다.