2011-03-01 11 views
10

現在、私はRazorでMVC3プロジェクトを作成中です。 私はコンパイル時に、スペルミスなどを意識してViewsをコンパイルしています。できるだけ早く私は< MvcBuildViewsに切り替えるようMVC3ビューの編集をオンにした後の異常なエラー

>真</MvcBuildViews >プロジェクトの設定ファイルで、コンパイル時に次のエラーを取得:てallowDefinition =として登録セクションを使用するとエラーになり

エラー1をアプリケーションレベルを超えた 'MachineToApplication'このエラーは、仮想ディレクトリがIISのアプリケーションとして構成されていないために発生します。

私は、IISと仮想ディレクトリまたはアプリケーションに関する主な問題をいくつか考えています。 問題は、IISを使用せず、代わりに既定のVisual Studio開発サーバーを使用することです。

この問題を解決するにはどうすればよいですか?

答えて

21

私はウェブ上で利用可能なさまざまなソリューションを試しましたが、問題にはあまり合わないか、機能しませんでした。私の問題おさらいする

:上CompileViewsを切り替えた後

は、私はすぐに、コンパイル時に上記のエラーが発生しました。 VS2010の既定のVisual Studio開発サーバーを使用して、MVCアプリケーションをテストしています。

今日、私は、Microsoftの開発者向けのサポートで要求を開き、 - 私はそれを認めることはほとんど恥ずかしい - 技術者からのコールバックの中に私の答えは約30秒を得た:

彼が言ったすべて:あなたの後藤くださいobjフォルダに移動し、すべての内容を削除します。その後、再度コンパイルしてください。

それは本当にすべてでした。

私は自分自身について多くの頭を振った後、結果をあなたと共有したいと思っていました。

+0

これを記録していただきありがとうございます。私はちょうど同じことに遭遇し、そのような単純な変化がこの効果をもたらす理由を頭で傷つけていました。 – Rudi

+0

元の説明と異なる設定の結果と同じエラーが発生しました。しかし、objフォルダをクリアすると、私の問題も解決しました。ソリューションを共有してくれてありがとう、それはほぼ1年後にはまだ関連している。 –

+0

スーパーソリューション。あなたは私の一日を保存しました:) –

3

この問題は、Webプロジェクト出力(テンプレートweb.configまたは一時公開ファイル)がobjフォルダにある場合に発生します。使用されるASP.NETコンパイラは、objフォルダの内容を無視するほどスマートではないため、代わりにエラーをスローします。

もう1つの修正点は、<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

関連する問題