제 경우에는 하나의 프로젝트에서만 내 PC에서만이 문제가 발생했습니다. 내 프로젝트는 VS2012에서 잘 작동했지만 VS2017에서 열었을 때이 문제가 발생했습니다.
여기에서 저에게 가장 큰 문제는 캐시였습니다. 내 프로젝트는 Razor 및 MVC 용 dll의 이전 캐시 버전을 가리키고 있었고 ViewBag와 같은 최신 버전에 추가 된 기능을 찾지 못했습니다. ViewBag는 Razor 버전 3에 추가되었지만 Razor 버전 2를 캐시했기 때문에 ViewBag를 찾을 수 없었습니다 (그러나 버전 2에있는 다른 항목을 찾을 수 있음). 그러나 수락 된 답변과 같이 캐시를 지우는 것만으로 문제가 해결되지 않았습니다. Razor의 경우 "2 대신 버전 3 사용", MVC의 경우 "4 대신 버전 5 사용"으로 구성 파일을 변경 한 다음 VS를 닫고 캐시를 제거하고 프로젝트를 열고 다시 빌드해야했습니다. 그런 다음 문제가 해결되었습니다. 다음은 더 자세한 지침입니다.
문제 해결에 도움이 된 일련의 변경 사항은 다음과 같습니다.
- "Views"폴더의 Web.config에서 모든 위치를 변경합니다.
- MVC 버전은 4.0.0.0에서 5.0.0.0으로 설정됩니다.
- Razor 버전은 2.0.0.0에서 3.0.0.0으로 설정됩니다.
제 경우에는 다음과 같습니다.
<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>
(참고 : 1) 버전이 다를 수 있습니다. 제 경우에해야 할 일을 말하고 있습니다. 2) 간결함을 위해 "..."로 일부 항목을 생략했습니다. 3) 5.3.2.0과 같은 MVC 버전이 있더라도 Razor 버전과 동일하게 5.0.0.0을 입력해야합니다. 3.0.0.0에 모두 0을 입력해야합니다.)
기본 구성 파일 (최상위 수준의 파일) webPages:version
에서 2.0.0.0에서 3.0.0.0으로 변경 합니다.
이 변경 사항은 아마도 솔루션에 영향을 미치지 않았지만 여전히 언급하겠습니다. "Views"폴더의 <namespaces>
섹션이 다음과 같이 프로젝트의 루트에있는 기본 .conifg 파일과 동일한 내용을 가지고 있는지 확인하십시오 .
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
- 마지막으로 VS를 닫습니다.
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Fenton이 (현재) 수락 한 답변에서 제안한 것처럼 (또는 올바른 경로가 무엇이든) 모든 캐시 파일을 삭제하십시오 . .scan
해당 답변에 언급되지 않은 파일 도 삭제 하십시오. 완료되면 VS를 열고 프로젝트를 정리하고 다시 빌드하십시오. 상황이 해야 지금 작동. 그것은 나를 위해 일했습니다.