60

ASP.NET MVC 4.5.2 프레임 워크에서.

타이핑 후

@Html.LabelFor()
or 
@Html.EditorFor()

보기에

오류가 발생합니다.'Expression <>'형식은 참조되지 않은 어셈블리에 정의되어 있습니다. 'System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'어셈블리에 대한 참조를 추가해야합니다.

어셈블리 참조 System.Core.dll, 버전 4.0.0.0, 런타임 버전 v4.0.30319를 추가했습니다. 또한 web.config에서 했어요.

24 답변


30

나도 너와 같은 문제로 달렸다. 문제는 Razor 뷰 (.cshtml)에 액세스 할 수 없다는 것이므로 누락 된 어셈블리 참조가 있음을 알리는 오류가 발생했습니다.System.Web.Mvc, 프로젝트 참조에도 불구하고. 조사한 결과 설치 된 NuGet 버전은 5.2.3이고 프로젝트는 5.2.0이었습니다. 해결책은 MVC 버전을 다운 그레이드하는 것입니다.

  1. Project-> NuGet Package Manager로 이동하십시오.
  2. MVC를 검색하십시오. 그것은 첫 번째 결과가 될 것입니다.
  3. 다음은 드롭 다운에서 다운 그레이드를 선택하는 것입니다. NuGet 패키지를 제출하십시오.

모든 대화 상자를 확인하고 갈 준비가되었습니다.


  • 감사합니다 @ prashant2008 - mansoor
  • 프로젝트에 5.2.0이 필요하다는 것을 어떻게 알았습니까? - Vanice
  • @ 바니 저는 .NET Framework 버전에 의존한다고 생각합니다. .NET 4.5.2 - & gt; MVC 4.0.0; .NET 4.6.0 - & gt; MVC 5.2.0; .NET 4.6.1 - & gt; MVC 5.2.3. (확인되지 않음) - JoaoRibeiro
  • 아무것도 수정하지 않고 모든 버전을 시도했습니다. - Mike
  • .net 4.7을 사용하면서도 여전히이 성가신 오류가 있습니다. - Sven

38

나는 아직도 당신이이 문제점을 가지고 있건 없건간에 그러나 나는 동일한 문제점을 또한 가지고 있는지 확실하지 않다.

나는 여기서 해결책을 찾을 수 있었다.

https://stackoverflow.com/questions/6496223/compilation-error-in-net-4-0-web-config-linq-not-found

<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

이게 도움이 되길 바란다..


  • 나는 이미이 질문을 게시하기 전에 이것을 시도했다. 어떤 방법 으로든 당신 덕분에. - mansoor

30

이 오류는 Visual Studio에서 Razor 뷰에 대한 Intellisense에 전원을 공급하기 위해 System.Web.Mvc 어셈블리를 찾을 수 없음을 의미합니다. 다음 중 하나 또는 둘 모두를 수정해야 할 수 있습니다.

  1. 컴파일을위한 .NET 프레임 워크의 버전 확인 기본 web.config (웹 사이트 루트에있는 속성)의 프로젝트 속성에 지정된 것과 동일합니다.

[루트] /Web.config :

<system.web>
    <compilation targetFramework="4.6" />

프로젝트 속성 :

Project Properties

  1. 뷰에 지정된 MVC 어셈블리의 버전 확인 web.config (보기 폴더에있는 하나)는 MVC와 동일합니다. 어셈블리를 프로젝트에서 사용 중입니다.

[views 폴더] /web.config :

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

MVC 어셈블리 참조 등록 정보 :

MVC version


  • 이것은 나를 위해 일했다. 많은 감사. - vibs2006
  • 이것 역시 나를 위해 해결되었지만 직접적으로는 아닙니다. 내 bin 폴더에서 잘못된 버전의 파일을 삭제하고 nuget을 통해 mvc를 업데이트 한 다음 올바른 bin 폴더에 올바른 버전을 넣어야했습니다. 너겟을 통해 업데이트 한 후에도 여전히 bin 폴더에서 잘못된 버전을 계속 얻는다면 bin 폴더에서 기존 버전을 삭제하십시오 - Joshua K

12

  • cshtml 파일을 닫습니다.
  • 솔루션 재구성
  • cshtml 파일 열기
  • 여전히 오류가 있습니까? Visual Studio를 다시 시작하십시오.
  • 여전히 오류가 있습니까? ctm1988의 대답을 사용하십시오


  • 나는 여기에 언급 된 모든 시도했지만 ... 여전히 작동하지 않는 .. Visual Studio의 작품을 완벽하게 다시 설치하는 동안 .. 나는 필연적 인 의존성이 이유라고 생각 .. - mansoor
  • 갑자기이 문제가 발생했다면 문제가 해결 된 것입니다. - Simon_Weaver

10

나는 이들 중 대부분을 시험해 보았습니다. 결국 나를 위해 일한 것은 프로젝트를 언로 드하고 csproj 파일을 편집 한 후 다음을 추가하는 것이 었습니다.

<Reference Include="System.Core" />

https://stackoverflow.com/a/38371981/2335660


  • 그것은 작동합니다! 그 시각적 인 studion은 System.Core가 이미 추가되었다고 생각하지만 실제는 그렇지 않다고 생각합니다. 따라서 수동으로해야합니다. - isxaker

3

내 경우 Resharper가 켜져있을 때만이 메시지가 표시되었습니다. Resharper 캐시를 지우고 VS를 다시 시작한 후 Resharper를 껐다가 다시 켭니다. 메시지가 사라졌습니다.


  • 제 경우에는 VS를 닫고 다시 시작하십시오. 나는 resharper를 가지고 있지만 그것으로 무엇인가를 할 필요가 없다. - JayJay

3

방금 똑같은 정확한 문제가 있었지만 해결책 중 어느 것도 문제를 해결하지 못했습니다. 이걸 내web.config이내에System.Web

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

나는 그 중 일부를 바꿀 때 그것을 제거했다.config약.


  • 어떤 기술 이상으로 태그를 추가하십시오 .. 태그가 없습니다 - Vikrant Kashyap
  • compilation / targetFramework 속성 추가는 저에게 효과적이었습니다. - Tom Bowers
  • 실수로 두 가지 다른 값을 대상 프레임 워크에 추가했습니다. 이로 인해 내 문제가 해결되었습니다. - Geethanga
  • 이 문제는 나에게 하이브리드 asp.net/webforms 응용 프로그램의 문제를 수정했습니다. 내 응용 프로그램의 대상 프레임 워크를 4.7로 업그레이드했으며,이 두 web.config 설정이 4.5를 여전히 인식하지 못했습니다. - Tom Regan

2

빌드 액션 cshtml 파일이 'Content'로 설정되어 있는지 확인하십시오.

나는 ReSharper를 사용하고 템플릿을 호출 할 때 어떤 이유로 생성 된 파일의 기본값이 'None'이라는 것을 알았습니다.


  • 나는 좋은 대답이 아니길 기대했다. - mansoor

2

누락 된 어셈블리와 동일한 문제가 있었는데 VS2017 빌드가 Bin 폴더에 올바르게 복사되지 않았습니다. 이 단계는 다음과 같이 도움이되었습니다.

  • 웹 프로젝트의 References 노드로 이동합니다.
  • System.Core에 대한 참조 찾기
  • VS 속성 창을 엽니 다.
  • 속성 창에서 로컬 복사 : False를 True로 변경하십시오.

이 의견에서 :CS0012 : '##### 모든 유형 #####'유형이 참조되지 않은 조립품에 정의되어 있습니다.


  • 이 링크가 질문에 대답 할 수는 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. -리뷰에서 - Steve Gomez
  • @ 스티브. 고마워, 스티브! 수정했습니다. Haven은 이전에 많은 댓글을 달았고 SO 에티켓이 부족합니다. :-) - Angel D

1

나를 위해, 프로젝트 메뉴에서 "Enable C # 6.0 / VB 14"옵션이있었습니다. 이 옵션을 선택하면 트릭을 만들었습니다. 이전에이 게시물에서 제안한대로 web.config를 수정하고 Visual Studio를 다시 시작했습니다.


1

나는 똑같은 문제에 직면했다. 근본적으로 문제는 다른 버전의System.Web.Mvc. 그래서 당신이 열어야 할 가장 좋은 물건입니다.Tools > Nuget Package Manager > Manage Nuget Packages for Solution. 당신은 아마 볼 수 있습니다.System.Web.Mvc~에Cosolidate탭. 업그레이드 또는 다운 그레이드가 가장 좋습니다. 현재 .Net 프레임 워크를 사용하는 경우.Net 4.6.1, 모두 업그레이드해야합니다.System.Web.Mvc버전5.2.4.0. 행운을 빕니다!


  • 나는 12 개의 패키지를 업그레이드해야했고 sln은 모든 것을 업데이트 한 후에 아무런 문제없이 실행되었습니다. 고맙습니다. - Jamie
  • 환영합니다 @jlg :) - Mehmet Taha Meral

1

Web.config에서 다음을 변경해야했습니다.

  <system.web>
    <compilation debug="true" targetFramework="4.7">

  <system.web>
    <httpRuntime targetFramework="4.7" />
    <compilation debug="true" targetFramework="4.7">


0

이것은 내 견해 중 하나에서 일어났습니다. 다른 모든 것은 괜찮 았습니다. 나는 다음과 같이했다 :

  • 새보기 만들기
  • 이전보기의 내용을 복사하여 새보기로 붙여 넣기
  • 이전 항목을 삭제했습니다.
  • 새 이름을 이전 이름으로 변경


0

다시 시작하는 Visual Studio가 나를 위해 일했습니다.


  • NuGet이 겉보기에 무고한 모습으로 업데이트 된 후에 이런 일이 일어났습니다. jQuery와 부트 스트랩과 같은 라이브러리였습니다. 업데이트 후에이 오류 메시지가 나타나고 Visual Studio를 다시 시작하면 문제가 해결되었습니다. - Steve Hiner

0

  • 파일 닫기
  • 솔루션 정리
  • 솔루션 빌드
  • 파일을 다시 엽니 다.


0

추가하려고 시도하십시오.

using system.Linq.Expressions;


  • 이 코드는 문제를 해결할 수 있지만,설명을 포함해서정말 게시물의 품질을 향상시키는 데 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. - Farkie

0

나도이 문제가 있었다. 작고 보기 흉한 사람targetFramework="4.5.2"targetFramwork="4.5"web.config 파일에서이를 해결했습니다.


0

CSHTML 파일이 하나 또는 두 개 밖에 없으면 파일이 손상된 것입니다.

나는이 일을 숨겨진 유니 코드 문자가있는 손상된 파일로 처리했습니다. 문서의 모든 텍스트를 새로운 메모장 인스턴스로 복사 해보십시오. 원본 파일의 내용을 지우고 저장하십시오. 파일 길이가 0보다 크면 잘못된 것입니다.

파일을 삭제하고 메모장 인스턴스를 이전 버전에 저장하십시오. 모든 오류가 나를 위해 갔다.

나는 이것을 내 해결책으로 몇 번이나 가지고왔다. 뭘 일으키는 지 모르지만Resharper라고 의심해라.거대한 덩어리를 심연으로 삼키기 시작하면 망쳐 버린다.

Resharper와 사랑 / 증오 관계가있는 유일한 사람입니까?


0

솔루션에 .NET Framework의 모든 버전을 대상으로하지 않는 프로젝트가 여러 개있는 경우 발생할 수 있습니다. 예를 들어 웹 응용 프로그램 프로젝트가 .NET 4.5를 대상으로하고 .NET 4.5.2를 대상으로하는 솔루션의 다른 프로젝트에 대한 어셈블리 참조가있는 경우입니다. 이 문제를 해결하려면 프로젝트를 모두 동일한 버전의 .NET Framework를 대상으로 변경해야합니다.


0

모든 답변이 작동하지 않는다면이 답변을 사용하십시오. 나는 똑같은 문제에 직면했다! 사실 migrations 폴더의 configuration.cs 파일이 누락되었거나 삭제되었습니다. migrations 폴더를 삭제하고 데이터베이스에서 migrations 테이블을 삭제했습니다. 패키지 관리자 콘솔 (PM)의 다음 명령은 다음과 같습니다.

Enable-Migrations -Force
Add-Migration Initial
update-database

이 프로세스는 configuration.cs 파일을 다시 만들었고 모든 것이 완벽하게 작동했습니다!


0

프로젝트 속성을 확인하여 대상 프레임 워크를 가져옵니다. 내 프로젝트에서 내 대상 프레임 워크를 일치 시켜서이 문제를 해결했습니다 .NET Framework 4.6.1 MVC 5.2.3이 적절한 솔루션이었습니다. NuGet에서 MVC 버전을 얻었습니다.


0

Web.config (루트에 있음)에 다음을 추가합니다. 나는 이전에 제안한 것들을 절대적으로 시도했지만, 아래에서 발견 할 때까지 아무런 효과가 없었다. 그것이 다른 누군가를위한 시간을 절약하길 바랍니다.

targetFramework = "4.6.1"을 사용하지만 다른 경우 사용하는 버전으로 변경하십시오.

<system.web>
   <compilation debug="true" targetFramework="4.6.1" />
   <httpRuntime targetFramework="4.6.1" />
</system.web>


0

필자의 경우 해결책은 Web.Config 내부에서 ConnectionString을 이동하는 것이 었습니다. 이 문은 AppSettings 섹션 뒤에 있어야합니다.


0

삭제 중[projectName] .csproj.user프로젝트 디렉토리의 파일이 나를 도왔습니다.

연결된 질문


관련된 질문

최근 질문