asp.net-mvc-3 - visual - web.config transform connection string example
Transformación web.config: atributo no reconocido ''xmlns: xdt''. Tenga en cuenta que los nombres de los atributos son sensibles a las mayúsculas (11)
- Haga clic derecho en el proyecto, haga clic en Publicar
- Ir a configuraciones -> Opciones de publicación de archivos
- Desmarque Precompilar durante la publicación
Esto evitará que web.debug.config / web.release.config vuelva a insertar el archivo en web.config si está utilizando Visual Studio Publish.
Obtengo este extraño error intermitente en un proyecto de MVC 3.0. Cuando construyo el proyecto, a veces recibo el siguiente mensaje de error:
Atributo no reconocido ''xmlns: xdt''. Tenga en cuenta que los nombres de los atributos distinguen mayúsculas de minúsculas
Esto se refiere al archivo de transformación web.config estándar (Web.Release.config copiado a continuación) No hay otros errores o advertencias. Esto está sucediendo en modo de depuración y lanzamiento. A veces se borra si limpio la solución
BEGIN UPDATE
Encontrado el problema. En el archivo MVC Project (MyProject.csproj), establecí las vistas de compilación en true
<MvcBuildViews>true</MvcBuildViews>
Una vez que vuelva a colocarlo en falso, el error anterior desaparecerá. Me gustaría tener la compilación de vista ya que detiene muchos errores de código de vista estúpido, etc. y es una mejora de rendimiento (las páginas se precompilan en lugar de jit)
Alguien sabe lo que esto está causando el error? ¿Es esto un error?
FINALIZAR ACTUALIZACIÓN
<?xml version="1.0"?>
<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your Web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
Acabo de cambiar a continuación en web.config
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
a
<configuration>
Solucionó el problema
Esto es una especie de solución, pero puede agregar la siguiente línea a sus comandos previos a la compilación :
del $(ProjectDir)obj/* /F /S /Q
Haga clic derecho en su proyecto> Propiedades> Desarrollar eventos> Preconstruir
Hay otra solución del equipo de Microsoft. Ver detalles here .
Simplemente copie y pegue este fragmento en su archivo .csproj o .vbproj:
<PropertyGroup>
<_EnableCleanOnBuildForMvcViews Condition=" ''$(_EnableCleanOnBuildForMvcViews)''=='''' ">true</_EnableCleanOnBuildForMvcViews>
</PropertyGroup>
<Target Name="CleanupForBuildMvcViews" Condition=" ''$(_EnableCleanOnBuildForMvcViews)''==''true'' and ''$(MVCBuildViews)''==''true'' " BeforeTargets="MvcBuildViews">
<ItemGroup>
<_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**/Package/**/*" />
<_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**/TransformWebConfig/**/*" />
<_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**/CSAutoParameterize/**/*" />
<_TempWebConfigToDelete Include="$(BaseIntermediateOutputPath)**/TempPE/**/*" />
</ItemGroup>
<Delete Files="@(_TempWebConfigToDelete)" />
</Target>
Esto automatizará el proceso de limpieza de la carpeta ''obj'' utilizando Build Targets.
He encontrado que esto funciona mejor para mí:
del "$(ProjectDir)obj/*" /F /Q
del "$(ProjectDir)obj/$(ConfigurationName)/AspnetCompileMerge/*" /F /S /Q
del "$(ProjectDir)obj/$(ConfigurationName)/CSAutoParameterize/*" /F /S /Q
del "$(ProjectDir)obj/$(ConfigurationName)/Package/*" /F /S /Q
del "$(ProjectDir)obj/$(ConfigurationName)/ProfileTransformWebConfig/*" /F /S /Q
del "$(ProjectDir)obj/$(ConfigurationName)/TempPE/*" /F /S /Q
del "$(ProjectDir)obj/$(ConfigurationName)/TransformWebConfig/*" /F /S /Q
de lo contrario, la (s) compilación (es) se quejan de la desaparición de edmxResourcesToEmbed
.
Me encontré con el mismo problema. Encontrará muchas bromas relacionadas con MvcBuildViews y varias condiciones de error. Pero ninguno parece mencionar este error en particular. Una solución rápida que funcionó para mí fue eliminar el contenido del directorio "obj" para el proyecto web afectado, y luego reconstruirlo.
Resuelvo mi conflicto haciendo lo mismo que dijo Job. Eliminar el atributo
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
Desde el Web.config principal y déjalo en Web.debug.config y Web.release.config
También me encontré con este problema. Para mí fue causado por haber creado una nueva configuración de depuración llamada "DevDebug". Lo arreglé haciendo una copia del web.debug.config, llamado web.DevDebug.config y lo agregué al proyecto.
Luego, cuando intenté ejecutar el compilador aspnet, estaba satisfecho de que pudiera encontrar la versión de configuración correcta del archivo de configuración para fusionar.
Tengo que ver esto también. Específicamente, había sido reproducible al cambiar entre las configuraciones de compilación en Visual Studio.
Mi solución anterior había sido borrar todo en la carpeta /obj
, pero después de revisar mi web.config, encontré que tenía un texto erróneo fuera de un elemento (es decir, no era XML válido).
Aparentemente, la configuración se transforma solo al tragarse una excepción al intentar realizar la transformación.
Se reparó mi web.config para que sea válida, y todo está funcionando como se espera ahora.
Espero que esto ayude a alguien
simplemente elimine el atributo xmlns: xdt del web.config, pero guárdelo en web.release.config y web.debug.config.
Tu transformación seguirá funcionando, y también lo hará tu sitio web.
Esto funciona con integración continua y WebDeploy:
Este problema ocurre en el momento en que establezco
<MvcBuildViews>true</MvcBuildViews>
en mi archivo de proyecto, lo cual necesito hacer.
Después de leer y probar todo lo que encontré sobre este problema, tengo un wokraround, que también funciona con WebDeploy a través de MSBuild.
MSBUild.exe ... /p:DeployOnBuild=true
Usted (solo) necesita eliminar la subcarpeta TransformWebConfig en su carpeta de compilación durante los eventos previos y posteriores a la compilación. Incluso funciona con servidores de integración continua que se rompen si no existe una carpeta
Línea de comando del evento preconstruido:
if exist "$(ProjectDir)obj/$(ConfigurationName)/transformwebconfig/" del "$(ProjectDir)obj/$(ConfigurationName)/transformwebconfig/*" /F /S /Q
Línea de comando de evento posterior a la construcción:
if exist "$(ProjectDir)obj/$(ConfigurationName)/transformwebconfig/" del "$(ProjectDir)obj/$(ConfigurationName)/transformwebconfig/*" /F /S /Q
Esto incluso funciona bien con Resharper
que a veces se confunde, si obj
toda la carpeta obj
.
¡Asegúrese de configurar el Run the post-build event
always
!
ACTUALIZACIÓN: Reemplazó la depuración y la versión con $ (ConfigurationName) y eliminó la línea duplicada resultante