Puedo ejecutar mi aplicación Asp.Net MVC 2 sin problemas en mi computadora local. Simplemente ejecute / depure.
Pero si ya lo he construido, ¡no puedo publicarlo! Tengo que limpiar la solución y volver a publicarla. Sé que esto no es crítico para el sistema, pero es realmente molesto. "Publicar con un clic" no es "Solución limpia y luego publicar con un clic"
El error exacto es el siguiente:
Error 11 Es un error utilizar una sección registrada como allowDefinition = 'MachineToApplication' más allá del nivel de la aplicación. Este error puede deberse a que un directorio virtual no está configurado como una aplicación en IIS.
Sospecho que tiene algo que ver con Web.Config en la carpeta Vistas, pero entonces, ¿por qué solo después de compilar una vez anteriormente? Y solo para tener en cuenta, la aplicación funciona bien una vez publicada.
Respuestas:
Tuve el mismo problema con mis aplicaciones MVC. fue frustrante porque todavía quería que se verificaran mis vistas, así que no quise apagar MvcBuildViews
afortunadamente me encontré con una publicación que me dio la respuesta. mantenga los MvcBuildViews como verdaderos , luego puede agregar la siguiente línea debajo en su archivo de proyecto:
Y haga que esa carpeta no esté en la carpeta de su proyecto. Funciona para mi. No es una solución perfecta, pero es buena por el momento. Asegúrese de eliminar la carpeta del paquete (ubicada dentro de la carpeta obj \ Debug y / o obj \ Release ) de la carpeta de su proyecto; de lo contrario, seguirá recibiendo el error.
FWIW, MS conocen este error ...
fuente
\obj
ruta), NO MvcBuildViews. La diferencia es sutil, pero significativa.Eliminé todo de mi carpeta obj / Debug y solucionó este error. Esto me permitió salir en el
opción en mi archivo de proyecto (que es útil con la plantilla T4MVC T4).
Editar: Esto se puede lograr mucho más fácilmente usando el menú "Construir" -> "Reconstruir solución" (porque lo que realmente hace la reconstrucción es borrar la carpeta obj / Debug y luego construir la solución).
fuente
Estoy usando esta solución en la página de MS Connect para este error. Limpia todos los archivos obj y temp de su proyecto (todas las configuraciones) antes de ejecutar AspNetCompiler.
fuente
rmdir /S /Q "$(ProjectDir)\obj"
a la sección de compilación posterior según Microsoft Ticket resolvió el problema!Este problema ocurre cuando hay un resultado de proyecto web (web.config con plantilla o archivos de publicación temporales) en la carpeta obj. El compilador 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 destruir la salida de publicación justo antes de llamar a <AspNetCompiler>. Abra su .csproj y cambie esto:
a esto:
Eso eliminará todos los web.configs en \ obj, así como todas las carpetas PackageTmp en \ obj.
fuente
obj
carpeta.<ItemGroup>
no son válidos, pero ignórelo, funciona de todos modos.Si está utilizando Web Publish, puede configurar
MvcBuildViews=false
yPrecompileBeforePublish=true
, que se precompila después de la copia en la carpeta temporal (inmediatamente antes de publicar / empaquetar).NOTA:
PrecompileBeforePublish
solo es compatible con la "nueva" pila de canalización de publicación web (VS2010 SP1 + Azure SDK o VS2012 RTM). Si está utilizando VS2010 RTM, deberá utilizar uno de los métodos alternativos.fuente
En cuanto a la solución de jrummell, la configuración:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;"
Se trabaja en VS 2010 , pero no en VS 2012 . En 2012 tienes que poner:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesWPPAllFilesInSingleFolder;CleanWebPublishPipelineIntermediateOutput"
Fuente:
VS 2010: C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets
VS 2012: C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets
fuente
Sé que esto ha sido respondido, pero solo quería agregar algo interesante que encontré.
Establecí "MvcBuildViews" en falso en el proyecto, eliminé todas las carpetas bin y obj y seguía recibiendo el error. Descubrí que había un archivo ".csproj.user" que todavía tenía "MvcBuildViews" establecido en verdadero.
Eliminé el archivo ".csproj.user" y luego todo funcionó.
Por lo tanto, asegúrese de que si está cambiando su archivo csproj, cambie o elimine también el archivo ".csproj.user".
fuente
También tuve este problema, así que creé un evento de precompilación en las propiedades del proyecto para limpiar los directorios de salida (
${projectPath}\bin,${projectPath}\obj\${ConfigurationName}
). En otro proyecto, también recibí este error, incluso con el evento de limpieza en su lugar. En el segundo proyecto, estaba compilando las vistas que se enumeran en el archivo del proyecto:Cambié el verdadero a falso y ya no se quejó de ese error, pero aún se ejecutó correctamente. No diré que sé exactamente qué estaba causando el segundo error, pero al menos me hizo avanzar por el momento.
fuente
El problema tiene que ver con los archivos intermedios, pero hay otra solución que consiste en limpiar esos archivos intermedios antes de construir las vistas.
Esta solución se ha incluido en alguna versión de VS, pero solo puedo decir que tuve el problema en VS 2013 Update 5. (Ver la sección "Cuidado" continuación, podría solucionarse en esta versión, pero no funciona solo en mi caso no estándar).
Tomé prestada la solución de Error: allowDefinition = 'MachineToApplication' más allá del nivel de aplicación en Visual Studio Connect.
La solución consiste en incluir estas líneas en el proyecto (
.csproj
archivo) de la aplicación web que gestiona el borrado de los archivos intermedios de salida:Cuidado: por alguna razón, probablemente porque lo incluí yo mismo en el proyecto, mi objetivo de compilación para construir las vistas fue nombrado
"BuildViews"
, en lugar de"MvcBuildViews"
, así que tuve que modificar elBeforeTargets
atributo en consecuencia. También simplifiqué el objetivo, eliminandoPropertyGroup
y simplificando la condición, así:fuente
En mi caso, vi que cuando tengo MvcBuildViews y PrecompileDuringPublish ambos verdaderos, era lo que estaba causando este problema.
Así que eliminé PrecompileDuringPublish y esa solución funcionó para mí y no he enfrentado este problema desde entonces.
fuente