Comment mettre à jour un attribut XML à partir d'un script MSBuild?
Je suis en utilisant MSBuild et MSBuild Missions De La Communauté, (à l'aide de XMLUpdate et XMLMassUpdate) pour mettre à jour les différentes sections de mon site Web.config une chose m'a déconcerté. Si j'ai:
<configuration>
<nlog throwExceptions="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File" fileName="${logDirectory}\SomeLog.log" layout="${message}"/>
</targets>
</nlog>
</configuration>
et j'ai essayer de remplacer les fileName
de la target
<XmlUpdate XmlFileName="$(BuildDir)\Builds\%(Configuration.Identity)\_PublishedWebsites\Presentation\Web.config"
XPath="//configuration/nlog/targets/target[@fileName]"
Value="${logDirectory}\SomeLog_%(Configuration.Identity).log" />
Il signale comme étant incapables de trouver quelque chose à mettre à jour, donc ma question est comment puis-je récupérer le nom de l'attribut à la mise à jour?
EDIT: - ce que cela Pourrait être un cas de l'espace de noms des affrontements que l'NLog section définit son propre espace de noms?
Mise à JOUR: posté de réponse de déclarer l'espace de noms ne fonctionne pas.
source d'informationauteur Dean
Vous devez vous connecter pour publier un commentaire.
Le premier problème est le xpath est incorrecte pour la mise à jour de l'attribut, il est actuellement à la recherche de la "cible" des nœuds avec un attribut appelé "nom de fichier" plutôt que le "nom de fichier" attribut de l'un nœud appelé "cible".
Xpath vous voulez, c'est:
/configuration/nlog/cible/cible/@nom de fichier
Comme pour l'espace de noms problème, Preet Sangha a la réponse correcte pour quevous devez utiliser le préfixe d'espace de noms, et ce doit être appliquée à chaque sous-élément, puisqu'ils sont tous dans cet espace de noms.
La déclaration finale:
Ici il indique la nécessité d'un espace de noms
pouvez-vous mettre à jour n'importe quel autre attribut?
Pour compléter la réponse donnée par keeperofthesoul (je pense que vous devriez lui donner le bounty btw) prendre un coup d'oeil à:
Ici, je suis en utilisant
%24
pour écrire le caractère spécial$
.