Web.transformation de la configuration: attribut non reconnu 'xmlns: xdt'. Notez que les noms d'attributs sont sensibles à la casse
je reçois cet étrange bug intermédiaire dans un projet MVC 3.0 Quand je construis le projet, j'obtiens parfois le message d'erreur suivant:
attribut non reconnu 'xmlns: xdt'. Notez que les noms d'attributs sont sensible à la casse.
ceci fait référence au web standard.config traduction fichier (sur le Web.Publier.configuration copiée ci-dessous) Il n'y a pas d'autres erreurs ou des avertissements. Cela se passe en mode de débogage et de publication. Parfois, ça s'éclaircit si je nettoie le solution
BEGIN UPDATE
find the issue. Dans le fichier de projet MVC (MyProject.csproj) que j'avais mis de construire des points de vue à true
<MvcBuildViews>true</MvcBuildViews>
une Fois remis à false l'erreur ci-dessus s'en va. J'aimerais avoir la construction de la vue car elle arrête beaucoup d'erreurs de code de vue stupide etc et est une amélioration de performance (les pages sont précompilées au lieu de jit)
quelqu'un sait ce que c'est l'origine de l'erreur? est-ce un bug?
END UPDATE
<?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>
11 réponses
j'ai rencontré le même problème. Vous trouverez beaucoup de badinage là-bas liés à MvcBuildViews et diverses conditions d'erreur. Mais aucune ne semble mentionner cette erreur particulière. Une solution rapide qui a fonctionné pour moi était de supprimer le contenu du répertoire "obj" pour le projet web affecté, puis de reconstruire.
C'est une sorte de solution de contournement, mais vous pouvez ajouter la ligne suivante à votre pré-construction commandes:
del $(ProjectDir)obj\* /F /S /Q
faites un clic droit sur votre projet > Propriétés > construisez des événements > pré-construisez
cela fonctionne avec L'Intégration Continue et WebDeploy:
Ce problème se produit, le moment où j'ai mis
<MvcBuildViews>true</MvcBuildViews>
dans mon dossier de projet, que je besoin pour le faire.
après avoir lu et testé tout ce que j'ai trouvé sur ce problème, j'ai un wokraround, qui fonctionne aussi avec WebDeploy via MSBuild
MSBUild.exe ... /p:DeployOnBuild=true
vous (seulement) devez supprimer le sous-dossier TransformWebConfig dans votre buildfolder pendant le pré - et après les événements de construction. Il fonctionne même avec des serveurs d'intégration continue qui cassent si aucun dossier n'existe
Pré-événement de construction de la ligne de commande:
if exist "$(ProjectDir)obj$(ConfigurationName)\transformwebconfig\" del "$(ProjectDir)obj$(ConfigurationName)\transformwebconfig\*" /F /S /Q
Post-événement de construction de la ligne de commande:
if exist "$(ProjectDir)obj$(ConfigurationName)\transformwebconfig\" del "$(ProjectDir)obj$(ConfigurationName)\transformwebconfig\*" /F /S /Q
Ceci fonctionne même très bien avec Resharper
ce qui peut parfois devenir confus, si vous supprimez leobj
dossier.
assurez-vous de mettre le Run the post-build event
always
!!
mise à jour: Remplacé par debug et release $(ConfigurationName) et retiré résultant de la double ligne
Je résous mon conflit en faisant la même chose que ce que Job a dit. La suppression de l'attribut
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
à Partir du Web principal.config et de la laisser dans le Web.débogage.config et Web.publier.config
Il y a un autre contournement de Microsoft Team. Voir les détails ici.
il suffit de copier-coller ce morceau dans votre .csproj ou .fichier 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>
cela va automatiser le processus de nettoyage du dossier 'obj' en utilisant des cibles de construction.
j'ai trouvé que cela fonctionne mieux pour moi:
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
sinon, construire(s) se plaignent de l' edmxResourcesToEmbed
en train de disparaître.
j'ai vu cela aussi. Plus précisément, il avait été reproductible lors d'un changement entre les configurations de construction dans Visual Studio.
ma solution de contournement avait déjà été de supprimer tout dans le \obj
mais après avoir parcouru mon site web.config de près, j'ai trouvé qu'il y avait un texte erroné à l'extérieur d'un élément (c.-à-d. QU'il était invalide XML).
apparemment, la config transforms avalait juste une exception en essayant d'effectuer la transformation.
J'ai réparé ma toile.config pour être valide, et tout fonctionne comme prévu maintenant.
Espérons que cela aide quelqu'un
j'ai aussi rencontré ce problème. Pour moi, cela a été causé par le fait que j'ai créé une nouvelle configuration de débogage appelée "DevDebug". Je l'ai réparé en faisant une copie du web.débogage.config, nommé web.DevDebug.config et de l'ajouter au projet.
puis, quand j'ai essayé d'exécuter le compilateur aspnet, il était satisfait qu'il puisse trouver la bonne version de configuration du fichier de configuration pour fusionner.
je viens de changer ci-dessous sur le web.config
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configuration>
Il a résolu le problème
- clic Droit sur le projet, cliquez sur Publier
- Goto Paramètres -> Publier Les Options
- Décocher la case précompiler pendant la publication
ceci empêchera le web.débogage.config / web.publier.config injection du fichier dans le web.config si vous utilisez visual studio publier.
il suffit de supprimer l'attribut xmlns:xdt du web.config, mais gardez-le dans le web.publier.config et web.débogage.config.
votre transformation fonctionnera toujours - tout comme votre site web.