2011-03-01 13 views
10

Actualmente estoy trabajando en un proyecto de MVC3 con Razor. He cambiado la compilación de Vistas para estar al tanto de los errores ortográficos, etc. en tiempo de compilación.MVC3 Extraño error después de activar la compilación de vistas

Tan pronto como interruptor en el <MvcBuildViews> cierto </MvcBuildViews > en el archivo de configuración de proyectos a Para obtener el siguiente error durante la compilación:

de error 1 Se trata de un error de utilizar una sección registrada como allowDefinition = 'MachineToApplication' más allá del nivel de aplicación. Este error puede deberse a que un directorio virtual no está configurado como una aplicación en IIS.

He leído varias soluciones posibles al problema, principalmente en relación con IIS y directorios virtuales o aplicaciones. El problema es que no utilizo IIS, sino que uso el servidor de desarrollo de Visual Studio predeterminado.

¿Qué puedo hacer para resolver este problema?

Respuesta

21

He intentado muchas soluciones diferentes disponibles en la web, pero o bien no encajaron en mi problema, o no funcionaron.

Para recapitular mi problema:

Después de cambiar el CompileViews, inmediatamente me puse el error anterior durante la compilación. Estoy usando el Visual Studio Development Server predeterminado de VS2010 para probar mi aplicación MVC.

Hoy me abrió una petición en apoyo de Microsoft Developer, y - casi me avergüenza admitirlo - consiguió mi respuesta de aproximadamente 30 segundos en la devolución de llamada desde el técnico:

Todo lo que dijo fue: Por favor, Goto su carpeta obj y eliminar todo el contenido. Luego compila de nuevo.

Y eso realmente fue todo lo que necesitó.

Así que después de muchas sacudidas sobre mí mismo, quería compartir los resultados contigo.

+0

Gracias por iniciar sesión aquí. Acabo de encontrar lo mismo y ya me estaba rascando la cabeza por qué un cambio tan simple podría tener este efecto. – Rudi

+0

Recibí el mismo error como resultado de una configuración diferente a la descripción original. Pero borrar la carpeta obj también resolvió mi problema. Gracias por compartir la solución, sigue siendo relevante casi un año después. –

+0

súper solución.Me salvaste el día :) –

3

Este problema se produce cuando hay una salida de proyecto web (archivos web.config con plantilla o publicación temporal) en la carpeta obj. El compilador de ASP.NET utilizado no es lo suficientemente inteligente como para ignorar cosas en la carpeta obj, por lo que arroja errores en su lugar.

Otra solución es desarticular la salida de publicación justo antes de llamar al <AspNetCompiler>. Abra su .csproj y cambiar esta situación:

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

a esto:

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

que se eliminarán todos los web.configs bajo \ obj, así como todas las carpetas PackageTmp en \ obj.

+0

Esta es la mejor solución en mi opinión. A diferencia de los demás, no requiere que realice un paso manual para eliminar la carpeta obj y también evita que el compilador recompile todo el proyecto. – Carsten

Cuestiones relacionadas