Я создал небольшую функцию для обработки XML-преобразования документов Microsoft в PowerShell.
Я скопировал файл Microsoft.Web.XmlTransform.dll из папки сборки Visual Studio в путь к моему сценарию, но вы можете сослаться на него изисходная папка, если вы хотите.
function XmlDocTransform($xml, $xdt)
{
if (!$xml -or !(Test-Path -path $xml -PathType Leaf)) {
throw "File not found. $xml";
}
if (!$xdt -or !(Test-Path -path $xdt -PathType Leaf)) {
throw "File not found. $xdt";
}
$scriptPath = (Get-Variable MyInvocation -Scope 1).Value.InvocationName | split-path -parent
Add-Type -LiteralPath "$scriptPath\Microsoft.Web.XmlTransform.dll"
$xmldoc = New-Object Microsoft.Web.XmlTransform.XmlTransformableDocument;
$xmldoc.PreserveWhitespace = $true
$xmldoc.Load($xml);
$transf = New-Object Microsoft.Web.XmlTransform.XmlTransformation($xdt);
if ($transf.Apply($xmldoc) -eq $false)
{
throw "Transformation failed."
}
$xmldoc.Save($xml);
}
Чтобы преобразовать web.config с помощью web.release.config:
XmlDocTransform -xml "Web.config" -xdt "Web.Release.config"
В качестве альтернативы, вы можете использовать самозагрузку Sayed Xml Transformскрипт, который позаботится о получении Microsoft.Xml.Xdt.dll для вас:
https://gist.github.com/sayedihashimi/f1fdc4bfba74d398ec5b