'Expression <>'형식이 참조되지 않는 어셈블리에 정의되어 있습니다.


84

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

입력 후

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

보기에

오류 : The type 'Expression <>'is defined in an assembly that is referenced. 어셈블리 'System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'에 대한 참조를 추가해야합니다.

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


답변:


41

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

  1. 프로젝트-> NuGet 패키지 관리자로 이동합니다.
  2. MVC를 검색하십시오. 첫 번째 결과가 될 것입니다.
  3. 다음은 NuGet 패키지 세부 정보의 드롭 다운에서 다운 그레이드를 선택하고 제출하는 것입니다.

모든 대화 상자를 확인하면 준비가 완료됩니다.


14
5.2.0이 필요한 프로젝트를 어떻게 알았습니까?
Vanice

3
@Vanice .NET Framework 버전에 따라 다르다고 생각합니다 : .NET 4.5.2-> MVC 4.0.0; .NET 4.6.0-> MVC 5.2.0; .NET 4.6.1-> MVC 5.2.3. (확인되지 않음)
JoaoRibeiro

9
.net 4.7을 사용하고 있는데 여전히이 성가신 오류가 있습니다
Sven

1
나는 같은 문제가 있었는데 web.config의 디버그 값이 false로 설정된 것으로 밝혀졌습니다. "True"로 설정 <compilation debug = "true"targetFramework = "4.5"/> <httpRuntime targetFramework = "4.5"/>
mlaribi

위의 솔루션이 잘 작동하도록 시도했습니다. 내 VS 솔루션 버전은 4.6.2이었다 나는 5.2.4 낭포 I에서 5.2.3로 MVC를 다운 그레이드 MVC 5.2.3 닷넷 4.6.2와 호환되는지 알게
이브라힘 Inam

58

이 문제가 계속 발생하는지 확실하지 않지만 같은 문제가 발생했습니다.

여기서 해결책을 찾을 수있었습니다

/programming/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"/>

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


이 질문을 올리기 전에 이걸 시도해 봤어요. 어떤 방법이 모두 당신 덕분에
만수르

1
좋아! 효과가있다. 적용하려면 cshtml 파일을 닫았다가 다시 열어야합니다.
Mahdi Ataollahi 2019

이것은 모든 web.configs를 살펴보고 버전이 stackoverflow.com/a/37381294/8684119
AMG

작동하지만이 솔루션이 약간 더럽다는 것을 알았습니다. 어쨌든, 제 경우에는 System.Core
T-moty

45

이 오류는 Visual Studio가 System.Web.Mvc 어셈블리를 찾아 Razor 뷰에 대한 인텔리 젠스를 강화할 수 없음을 의미합니다. 이를 수정하려면 다음 중 하나 또는 모두가 필요할 수 있습니다.

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

[루트] /Web.config :

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

프로젝트 속성 :

프로젝트 속성

  1. view web.config (view 폴더에있는 것)에 지정된 MVC 어셈블리의 버전이 프로젝트에서 사용중인 MVC 어셈블리와 동일한 지 확인합니다.

[보기 폴더] /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 버전


3
이것은 나를 위해 일했습니다. 많은 감사합니다.
vibs2006 2011

1
이것은 나에게도 해결되었지만 직접적으로는 아닙니다. 내 bin 폴더에서 잘못된 버전의 파일을 삭제하고 nuget을 통해 mvc를 업데이트 한 다음 내 bin 폴더에 올바른 버전을 배치하고 작동했습니다. nuget을 통해 업데이트 한 후에도 bin 폴더에 잘못된 버전이 계속 표시되는 경우 bin 폴더에서 기존 버전을 삭제하십시오
Joshua K

감사합니다. NuGet을 통해 Microsoft.AspNet.Mvc를 v5.2.7로 업데이트하고 앱이 계속 작동하는 동안 .schtml 파일에서이 오류를보기 시작했습니다. <system.web.webPages.razor> 아래의 Views 폴더에있는 web.config는 여전히 v5.2.3이었습니다. v5.2.7로 수정하는 것이 도움이되었습니다.
vkelman

이것은 효과가있었습니다-감사합니다! [Views] /web.config를 확인하는 것을 기억하는 것이 저에게 핵심이었습니다. 다른 모든 곳에서 일치하는 버전!
Jay Dawkins

21
  • cshtml 파일 닫기
  • 솔루션 재 구축
  • cshtml 파일 열기
  • 여전히 오류가 있습니까? Visual Studio 다시 시작
  • 여전히 오류가 있습니까? ctm1988의 답변 사용

나는 모든 것이 여기에 언급 된 시도 ...하지만 완벽 비주얼 스튜디오의 작품을 다시 설치하면서 여전히 작동하지 ... .. 난 종속성 누락 생각한 것은 이유이다 .. 한
만수르

제대로 작동하는 프로젝트가 있었는데 갑자기이 문제가 발생했다면 이것이 아마도 수정일 것입니다!
Simon_Weaver 2017-04-26

얼마나 자주 작동하는지 믿을 수 없습니다
nmit026

16

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

<Reference Include="System.Core" />

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


2
효과가있다! Visual Studion은 System.Core가 이미 추가되었다고 생각하지만 실제로는 없습니다. 수동으로이 작업을 수행 할 필요가 그래서
isxaker

10

프로젝트 디렉토리에서 [projectName] .csproj.user 파일을 삭제 하면 도움이되었습니다.


나를 위해 일함 Vs 2017 Asp MVC5
Speuline

2
이것은 VS 2019 및 MVC5에서 작동했습니다. 또한 bin / obj 및 .vs 폴더도 정리했습니다.
Leniency

7

나는 똑같은 문제가 있었고 어떤 해결책도 문제를 해결하지 못했습니다. 나는 이것을 내 web.config안에 추가해야했다System.Web

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

나는 config주변의 일부를 바꿀 때 그것을 제거했습니다 .


발견 된 기술 이상의 .. 아니 태그 태그를 추가하십시오
Vikrant 쉬얍

compilation / targetFramework 속성을 추가하면 저에게 효과적이었습니다.
Tom Bowers

실수로 대상 프레임 워크에 대해 두 가지 다른 값을 추가하여 문제가 해결되었습니다.
Geethanga

이로 인해 하이브리드 asp.net/webforms 앱인 문제가 해결되었습니다. 애플리케이션의 대상 프레임 워크를 4.7로 업그레이드했지만이 두 web.config 설정이 여전히 4.5를 가리키는 것을 알지 못했습니다.
Tom Regan

4.8에이 답변으로 해결 된 동일한 문제
Mamdouh

4

제 경우에는 Resharper가 켜져있을 때만이 메시지가 표시되었습니다. Resharper 캐시를 지우고 VS를 다시 시작하고 Resharper를 껐다가 다시 켰습니다. 메시지가 사라졌습니다.


1
제 경우에는 VS를 닫고 다시 시작하십시오. 나는 resharper가 있지만 아무것도 할 필요가 없습니다.
JayJay

3

어셈블리 누락과 동일한 문제가 발생했으며 VS2017 빌드가 Bin 폴더에 제대로 복사하지 못했습니다. 이 단계는 저에게 도움이되었습니다.

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

이 주석에서 : CS0012 : '##### Any type #####'형식이 참조되지 않는 어셈블리에 정의되어 있습니다.


이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다. - 리뷰에서
Steve Gomez

1
@SteveG. 고마워, 스티브! 나는 그것을 편집했다. 훨씬 전에 주석 및 일부 SO 에티켓 부족하지 않은 ... :-)
Angel_D

1
이것은 내 문제를 해결했으며 Visual Studio 다시 시작도 필요하다고 언급해야합니다. 감사합니다.
Saeed Mousavi

3

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

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

...에

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

1
감사합니다, @juFo! 이로 인해 MVC 5가 포함 된 Visual Studio 2019에서 문제가 해결되었습니다. 내 MVC 프로젝트의 대상 프레임 워크는 4.7.2 였지만 web.config에는 targetFrameworkin <httpRuntime><compilation>태그 에 대해 4.7.1이있었습니다 . 프로젝트의 .NET Framework 버전을 올바르게 반영하도록 속성을 업데이트하기 만하면 문제가 해결되었습니다.
iCode

2

cshtml 파일 Build Action이 'Content'로 설정되어 있는지 확인하십시오.

ReSharper를 사용하고 있는데 어떤 이유로 템플릿을 호출 할 때 생성되는 파일이 기본적으로 '없음'으로 설정된다는 것을 알게되었습니다.


2

Web.config (루트)에 다음을 추가합니다. 나는 이전 제안의 모든 것을 절대적으로 시도했지만 아래를 찾을 때까지 아무것도 작동하지 않았습니다. 다른 사람의 시간을 절약 할 수 있기를 바랍니다.

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

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

2

System.Core.dll 파일을 bin 폴더에 수동으로 추가합니다 . VS를 다시 시작하고 프로젝트를 빌드하십시오 . 나를 위해 해결

@Html 도우미와 Kendo 그리드의 모든보기에 디자인 오류가있었습니다.

Web.config에 System.Core 어셈블리를 추가하면 아무 작업도 수행되지 않았으며 MVC 버전도 다운 그레이드되지 않았습니다. System.Core에 대한 참조를 수동으로 추가하려고 할 때 오류 :

'System.Core'에 대한 참조를 추가 할 수 없습니다. 이 구성 요소는 이미 빌드 시스템에서 자동으로 참조됩니다.

프로젝트 속성의 TargetFramework가 프로젝트 web.config의 TargetFramework와 일치하는지 확인하십시오.

bin 폴더의 스크린 샷


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.MvcCosolidate탭을 선택합니다. 업그레이드 또는 다운 그레이드가 최선의 선택입니다. 최신 .Net 프레임 워크 (현재)를 사용하는 경우 .Net 4.6.1모든 System.Web.Mvc버전을 5.2.4.0. 행운을 빕니다!


업그레이드가 필요한 12 개의 패키지가 있었고 모든 것을 업데이트하면 sln이 문제없이 실행되었습니다. 감사합니다.
Jamie

1

글쎄, /Views/web.config 에서 어셈블리 참조를 수정하여 수정했습니다 . 이미지를 참조하십시오.

여기에 이미지 설명 입력


1

bin, .vs 및 obj 디렉토리를 삭제하십시오. Visual Studio에서 프로젝트를 빌드 한 후.


나는 내 프로젝트의 여러 버전 사이에서 많은 전환을한다. 몇몇은 다른 프레임 워크를 대상으로한다. 이것은 내 "System.Core"참조 오류를 처리했습니다. 체크 아웃 사이에 VS 환경을 정리해야하는 경우가 있다는 간단한 알림에 감사드립니다.
Suncat2000

0

이것은 내 견해 중 하나에서 발생했습니다. 다른 모든 견해는 괜찮 았습니다. 다음을 수행했습니다.

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

0

Visual Studio를 다시 시작하는 것이 저에게 효과적이었습니다.


이것은 겉보기에 결백 한 NuGet 업데이트 후에 나에게 발생했습니다. jQuery 및 부트 스트랩과 같은 라이브러리였습니다. 업데이트 후이 오류 메시지가 표시되고 Visual Studio를 다시 시작하면 문제가 해결되었습니다.
Steve Hiner 2016-04-27

0
  • 파일 닫기
  • 솔루션 청소
  • 솔루션 구축
  • 파일 다시 열기

0

추가하려고

using system.Linq.Expressions;


4
이 코드 스 니펫은 질문을 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 큰 도움이됩니다. 미래에 독자를 위해 질문에 답하고 있으며 해당 사용자는 코드 제안 이유를 모를 수 있습니다.
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

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

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

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


0

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


0

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


0

나는 내 루트의 Web.config에이 추가 된 것 (MVC 5.2.4와 .NET 프레임 워크 4.7.1 사이트에) 나를 위해 그것을 해결하는 것을 발견 위와 결국 모두를했다 <compilation>-

<assemblies>
  <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.