19

내 Visual Studio Ultimate 2013 업데이트 4는 ASP.NET MVC 5보기를 컴파일하지 않습니다.VS2013은 ASP.NET MVC5보기를 컴파일하지 않습니다.

편집은 항상 성공하지만 컴파일 오류는 산발적으로보기에 나타납니다. Intellisense는 또한보기에서 켜고 있습니다. 나는 그것이 VS2012에서 훨씬 더 잘 작동하고 있다고 말할 것이다. (나는 그 버전에서별로 MVC를하지 않았다.)

VS2010에서 작동하는 데 사용하는 .csproj 파일에 <MvcBuildViews>true</MvcBuildViews>을 추가하려고했지만 더 이상 작동하지 않습니다.

어떤 문제 일 수 있습니까?

업데이트 : 이전 버전의 VS에서 발생했던 것처럼보기에서 오류를 보는 방법을 찾고 있습니다.

+0

Resharper를 사용합니까? – Ofiris

+0

아니요, 사용하지 않습니다. – vtortola

+1

RazorGenerator는보기를 컴파일하는 데 훨씬 좋습니다. 나는 그것에 전환하는 것을 고려할 것이다 : https://visualstudiogallery.msdn.microsoft.com/1f6ec6ff-e89b-4c47-8e79-d2d68df894ec 및 NUGET : https://www.nuget.org/packages/RazorGenerator.Mvc/ – mattytommo

답변

14

프로젝트가 빌드 후 이벤트에 목표와 후크를 포함합니까? 명령 줄에서 msbuild WebApplication1.csproj /t:MvcBuildViews을 시도하면 기본 속성 집합과 대상이 모두 정의되어 있는지 확인합니다.

<PropertyGroup> 
    <MvcBuildViews>true</MvcBuildViews> 
</PropertyGroup> 

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
</Target> 

VS2013U4에서 빈 MVC 프로젝트를 만들고 csproj를 자신과 비교해보십시오.

+0

VS2013 MVC5 앱에서 MvcBuildViews가 false로 설정되었습니다. 정보 주셔서 감사합니다. 스위치를 켜면 어디서 볼 수 있는지 알 수 있습니다. 생성 된 MVC 파일이지만 이름은 면도기 뷰를 나타냅니다. 네임 스페이스 이름을 바꾼 후 모든보기를 거쳐야하는 악몽이었습니다. – Andez

30

솔루션 탐색기에서 웹 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. Unload Project을 클릭하십시오. 프로젝트를 마우스 오른쪽 단추로 클릭하고 Edit <projname>.csproj을 클릭하십시오.

이 요소가 있는지 확인하십시오 (존재하지 않는 경우 추가하십시오).

<Project> 
    <PropertyGroup> 
    <MvcBuildViews>true</MvcBuildViews> 
    </PropertyGroup> 
</Project> 

아래로 스크롤하십시오. "빌드 프로세스를 수정하려면 아래 대상 중 하나에 작업을 추가하고 주석 처리를 제거하십시오."라는 주석이 있어야합니다. 마우스 오른쪽,

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
    <ItemGroup> 
     <ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" /> 
     <ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories(&quot;$(BaseIntermediateOutputPath)&quot;, &quot;PackageTmp&quot;, System.IO.SearchOption.AllDirectories))" /> 
    </ItemGroup> 
    <Delete Files="@(ExtraWebConfigs)" /> 
    <RemoveDir Directories="@(ExtraPackageTmp)" /> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 
    </Target> 

.csproj 파일을 닫습니다

(위의 코드는 당신은 내가 언급 주석이 표시되지 않는 경우 루트 <Project> 노드의 부모를 가져야한다) : 그 아래에이 마크 업을 추가 솔루션 탐색기에서 프로젝트를 클릭하고 Reload Project을 클릭하십시오.

이것은보기를 컴파일 단계에 추가하고 오류가 발견되면 빌드를 중단합니다. 나는 이것이 좋은 것임을 발견했다. 왜냐하면 그것 없이는 내가 때때로 나의 사이트를 배치하고 수동으로 명중하기 전까지 오류 목록에서 오류를 발견하지 못하기 때문이다. 경고하면 빌드 단계에 약간의 시간이 추가되어 상당히 느려질 것입니다. 달성하려는 대상에 따라 신속하게 빌드 -> 테스트 워크 플로우를 달성하기 위해 선택적으로 활성화/비활성화 할 수 있습니다.

Chris Hyne의 대답은 MVCBuildViews not working correctlyCan Razor views be compiled?입니다.

+0

이것은 빌드 후 뷰를 컴파일하고 생성 된 C# 파일에 오류를 표시합니다. 하지만 필요한 것은 뷰의 컴파일 오류입니다. – vtortola

+0

@vtortola 나는 그때 당신이 무엇인지 이해하지 못합니다.이 구성을 사용하면 빌드를 중단하고 컴파일 오류 목록을 표시 한 다음 두 번 클릭하여 해당보기로 이동하여 처리 할 수 ​​있습니다. 그게 네가 한 일이 아니라면 더 잘 설명해 줄 수 있니? – mason

+0

기다려주세요. 존재하지 않는 모델에 대한 오류가 발생했습니다. 두 가지 오류가 있습니다. 하나는 뷰에, 다른 하나는 생성 된 C# 파일로 가져옵니다. 감사! – vtortola

관련 문제