如何最好地更新MSBuild中的XML节点
我一直在使用Tigris社区任务来使用XMLUpdate任务更新各种AppSettings键 但是,现在我想在system.net部分添加一个节点来设置代理 我申报了一笔财产如何最好地更新MSBuild中的XML节点,xml,msbuild,web-config,msbuildcommunitytasks,Xml,Msbuild,Web Config,Msbuildcommunitytasks,我一直在使用Tigris社区任务来使用XMLUpdate任务更新各种AppSettings键 但是,现在我想在system.net部分添加一个节点来设置代理 我申报了一笔财产 <PropertyGroup> <proxy><defaultProxy> <proxy usesystemdefault="False" proxyaddress="http://IPADDRESS:PORT" /> <
<PropertyGroup>
<proxy><defaultProxy> <proxy usesystemdefault="False" proxyaddress="http://IPADDRESS:PORT" /> </defaultProxy></proxy>
</PropertyGroup>
defaultProxy代理usesystemdefault=“False”代理地址=”http://IPADDRESS:PORT“//默认代理
XMLUpdate任务如下所示
<XmlUpdate
Prefix="n"
Namespace="http://schemas.microsoft.com/.NetConfiguration/v2.0"
XmlFileName="$(BuildDir)\Builds\_PublishedWebsites\Presentation\Web.config"
XPath="/n:configuration/n:system.net"
Value="$(proxy)" />
这将更新web配置,但它直接从属性组更新,即不转换尖括号的转义字符。有人有什么想法吗 您可以使用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>
在本例中,我们将ContentFile中ContentRoot指向的节点替换为SubstitutionsFile(当前MSBuild文件)中SubstitutionsRoot指向的节点
此技术利用了msbuildprojectextensions元素,该元素允许您将XML添加到项目文件中,该文件将被MSBuild引擎忽略
(或者,如果不想使用XmlMassUpdate,可以在ProjectExtensions和XmlUpdate中的节点上使用XmlRead任务。)