2010-05-04 4 views
32

VS 2010에서 MVC2 프로젝트의 .csproj 파일에서 <MvcBuildViews>true</MvcBuildViews>을 변경하면 Entity Framework를 사용하는 경우 오류가 발생합니다.ASP.NET MVC 2의 Entity Framework에서 MvcBuildViews가 true

Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config 129

디버깅하는 동안보기를 작성하고 싶습니다. 또한 프로젝트를 컴파일하고 싶습니다.

답변

58

:

<add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

이 찾을 수있는 컴파일러를 알려줍니다 그 유형이 없습니다.

+5

명백하고 논리적 인 해결책. 감사. 그런데 왜 그렇게 행동합니까? 내 어셈블리에 System.Data.Entity.Design 네임 스페이스를 추가해야하는 이유는 내 코드와 관련이 없습니다. Visual Studio의 업무이므로 응용 프로그램에 추가하면 안됩니다. –

+1

왜 이런 일이 일어나는 지 아는 사람이 있습니까? – BrianFinkel

+7

''- 다른 사람이 그 문제를 알아내는 것을 방지하기 위해 이동합니다. 참조 http : // stackoverflow.com/a/10078384/10245 –

0

MvcBuildViews="true"을 설정할 때 유사한 오류가 발생했습니다.이 오류는 임시 파일을 빌드하고 단순히 좋아하지 않기 때문에 여러 web.configs를 찾아서 빌드해야합니다.

그것은 완전히 다른 오류,하지만 나는 그들이이 관련 될 수 있다는 비열한 의심을 가지고

...

당신은 내가 here했다 원래의 질문을 찾을 수 있습니다 다음 솔루션은 here을 설명했다.

솔루션은 기본적으로 출력 경로가 빌드되는 위치를 변경하도록합니다 ... 따라서 웹 사이트의 csproj 파일에 <BaseIntermediateOutputPath>을 추가해야합니다.

예.

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    ...BLAH... 
    <BaseIntermediateOutputPath>..\TempBuildOutput</BaseIntermediateOutputPath> 
    </PropertyGroup> 
    ...A WHOLE LOTTA BLAH... 
</Project> 

HTHs,
찰스

이 MVC는 당신의 web.config 파일에 다음 요소를 추가하여 문제를 컴파일 해결할 수
2

이는 완벽한 예를 들어 내가 너무이 문제가 있고, 내가 어떤 실체 파일 (edmx 등)를 작성했지만이를 삭제했다고 파악

<configuration> 
<system.web> 
    <customErrors mode="Off"/> 
     <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.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </assemblies> 
</compilation> 
</system.web> 
</configuration> 
4

web.config 반면입니다.

이 파일을 만든 후에이 문제가 발생하기 시작했습니다. 응용 프로그램 폴더 검사에서 Visual Studio가 실제로 드라이브에서 해당 파일을 삭제하지 않았다는 사실을 알았습니다.이 파일은 프로젝트에서 삭제되었습니다. 따라서 프로젝트를 컴파일 할 때이 edmx 파일을보고이를 포함시킬 것입니다. 그러므로 오류.

쉬운 수정 - 드라이브에서 엔티티 파일을 영구적으로 삭제하십시오!

+0

이것은 결국 내 문제가 발생했다. 뭔가 잘못해서 실수로 드래그하여 잘못된 폴더에 떨어 뜨렸다. – Falkayn

+0

그냥 내 생각에. 오래된 대체 된 edmx는 컴파일러에 의해 일부 # # $ @ # $ 이유로 선택되었습니다. –

+0

방금 ​​.edmx 파일을 삭제하면 몇 단계를 거쳐야 할 것 같습니다. 그것은 내 프로젝트의 핵심입니다. – ProfK

3

빌드 공급자를 제거 할 수 있습니다.

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    <buildProviders> 
     <remove extension=".edmx"/> 
    </buildProviders> 
    </compilation> 
</system.web> 
+0

오류로 인해 실패합니다. "allowDefinition = 'MachineToApplication'으로 등록 된 섹션을 응용 프로그램 수준 이상으로 사용하는 것은 오류입니다." –

+0

@PhilippMunin 오류는 편집중인 구성 파일이 IIS 응용 프로그램의 루트 폴더에 있지 않다는 것을 의미합니다. 일반적으로 잘못된 하위 폴더를 편집하는 중이거나 하위 폴더에서 구성 파일을 가져 오는 경우가 있습니다. 그렇지 않으면 iis를 구성하지 않은 것입니다. 프로젝트로 응용 프로그램을 제공하십시오. 응용 프로그램에 대한 추가 정보 : http://technet.microsoft.com/en-us/library/cc771654(v=ws.10).aspx –

0

코멘트를 추가 할 담당자가 충분하지 않습니다. 'System.Data.Entity.Design'어셈블리 참조를 루트 Web.config에 추가해야한다고 말하고 싶습니다. 실수로 내 Views 디렉토리의 Web.config에 추가하려고했습니다. 이 함정에 조심하십시오.

+1

댓글이나 답변입니까? 귀하의 제안이 OP가 직면 한 문제를 해결할 경우, [편집] 이것을 보통 응답으로 말하면서 50 명의 담당자에게 논평을 요구하는 규칙을 우회하려는 시도는 아닙니다. 답변 일 뿐인 댓글 일 경우 삭제하십시오. 이 답변은 현재 검토 대기열에 있으며 사이트 규칙을 위반하여 삭제 될 수 있습니다. – BSMP

+0

의견을 말하기 위해 50 명의 담당자가 필요한 규칙을 우회합니다. 누군가가 선택한 답변에이 "답변"을 덧붙일 수 있다면 매우 유용 할 것입니다. 감사. –

관련 문제