В вашей схеме вам нужно поместить animal
и person
внутри объекта properties
.
В настоящее время, поскольку эти ключи свойств не находятся внутри объекта properties
, они классифицируются как неизвестные ключевые слова и игнорируются.
В противном случае, да, вы правильно поняли.
Вы могли использовать XmlMassUpdate вместо задачи XmlUpdate.
<ProjectExtensions>
<defaultProxy>
<proxy usesystemdefault="False" proxyaddress="http://IPADDRESS:PORT"/>
</defaultProxy>
</ProjectExtensions>
<Target Name="SubstituteFromWebConfig">
<XmlMassUpdate
NamespaceDefinitions="msb=http://schemas.microsoft.com/developer/msbuild/2003;n=http://schemas.microsoft.com/.NetConfiguration/v2.0"
ContentFile="$(BuildDir)\Builds\_PublishedWebsites\Presentation\Web.config"
ContentRoot="/n:configuration/n:system.net"
SubstitutionsFile="$(MSBuildProjectFullPath)"
SubstitutionsRoot="/msb:Project/msb:ProjectExtensions/msb:system.web" />
</Target>
В этом примере мы заменяем узел, на который указывает ContentRoot в ContentFile тем, на который указывает SubstitutionsRoot в SubstitutionsFile (Текущий файл MSBuild).
Эта техника использует в своих интересах элемент MSBuild ProjectExtensions, который позволяет Вам добавлять XML к файлу проекта, который будет проигнорирован механизмом MSBuild.
(Или если Вы не хотите использовать XmlMassUpdate, Вы могли бы использовать задачу XmlRead на узле в ProjectExtensions и XmlUpdate.)