2011-03-01 4 views
10

저는 현재 Razor로 MVC3 프로젝트를 진행하고 있습니다. 컴파일 타임에 맞춤법 오류 등을 인식하기 위해 뷰를 컴파일 할 때 switchen이 있습니다. 즉시 나는 < MvcBuildViews에 스위치로MVC3보기 편집을 전환 한 후 이상한 오류가 발생했습니다.

> 사실 </MvcBuildViews > 프로젝트 구성 파일에서 컴파일하는 동안 다음과 같은 오류 얻을 : allowDefinition =으로 등록 된 섹션을 사용하면 오류가 발생

오류 1 응용 프로그램 수준 이상의 'MachineToApplication'. 이 오류는 가상 디렉터리가 IIS에서 응용 프로그램으로 구성되지 않아 발생할 수 있습니다.

IIS 및 가상 디렉터리 또는 응용 프로그램과 관련하여 여러 가지 가능한 해결책을 주로 읽었습니다. 문제는 IIS를 사용하지 않고 대신 기본 Visual Studio Development Server를 사용한다는 것입니다.

이 문제를 해결하려면 어떻게해야합니까?

답변

21

웹에서 사용할 수있는 많은 솔루션을 시도했지만 문제가 해결되지 않았거나 제대로 작동하지 않았습니다.

내 문제 요약하자면 :에 CompileViews 전환 후

을, 나는 즉시 컴파일하는 동안 위의 오류가 발생했습니다. VS2010의 기본 Visual Studio Development Server를 사용하여 MVC 응용 프로그램을 테스트하고 있습니다. 나는 그것을 인정하는 거의 부끄럽다 - -

오늘은 마이크로 소프트의 개발자 지원에서 요청을 개설하고, 기술자로부터 콜백으로 약 30 초 내 대답을 얻었다 :

그는 말했다 모든했다 : 제발 고토 당신의 obj 폴더에 저장하고 모든 내용을 삭제하십시오. 그런 다음 다시 컴파일하십시오.

그리고 그게 전부였습니다.

그래서 나 자신에 대해 머리를 흔드는 결과를 여러분과 나누고 싶었습니다.

+0

여기에 로그인 해 주셔서 감사합니다. 나는 방금 같은 일을 겪었으며, 그런 간단한 변화가 왜이 효과를 낼 수 있었는지 내 머리를 이미 긁어 모으고있었습니다. – Rudi

+0

원래 설명과 다른 구성으로 인해 동일한 오류가 발생했습니다. 하지만 obj 폴더를 지우면 내 문제가 해결되었습니다. 솔루션을 공유해 주셔서 감사합니다. 거의 1 년 후 아직 관련성이 있습니다. –

+0

수퍼 솔루션.당신은 내 날을 저장했습니다 :) –

3

이 문제는 웹 프로젝트 출력 (templated web.config 또는 임시 게시 파일)이 obj 폴더에있는 경우 발생합니다. ASP.NET 컴파일러를 사용하면 obj 폴더의 내용을 무시할만큼 똑똑하지 않으므로 대신 오류가 발생합니다.

<AspNetCompiler>을 호출하기 전에 게시 출력을 바로 잡으십시오. 당신의 .csproj를 열고이를 변경이에

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

을 : \의 OBJ에서 \ OBJ뿐만 아니라 모든 PackageTmp 폴더 아래의 모든 web.configs 삭제됩니다

<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> 

합니다.

+0

이것은 내 생각에 가장 좋은 해결책이다. 다른 것들과 달리 obj-folder를 지우는 수동 단계를 수행 할 필요가 없으며 컴파일러가 전체 프로젝트를 다시 컴파일하지 못하게합니다. – Carsten

관련 문제