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>
43
demandé sur Andrew Harry 2012-10-05 04:38:44

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.

77
répondu BrianHT 2012-11-16 16:24:17

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

31
répondu Andre Calil 2013-03-05 20:39:04

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

mise à jour: Remplacé par debug et release $(ConfigurationName) et retiré résultant de la double ligne

8
répondu Flynn 2014-08-02 15:21:43

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

1
répondu Mister Q 2013-12-20 16:02:13

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.

1
répondu Anton Palyok 2015-12-18 13:47:37

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.

0
répondu PhilW 2013-06-21 15:05:08

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

0
répondu Nagoh 2014-08-17 10:42:55

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.

0
répondu Floyd Burger 2015-01-23 02:06:54

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

0
répondu Avery Lam 2015-02-12 12:03:13
  1. clic Droit sur le projet, cliquez sur Publier
  2. Goto Paramètres -> Publier Les Options
  3. 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.

0
répondu Sile 2016-02-13 21:18:44

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.

0
répondu Job 2016-07-15 13:23:32