这是我的web.config文件和内容。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
这是我的power shell脚本,用于从标记中删除所有内容...
(Get-Content C:\Temp\web.config) |
Foreach-Object {$_ -replace '<dependentAssembly>[\s\S]*?<\/dependentAssembly>', ''} |
Set-Content C:\Temp\web.config
脚本正在运行,但它没有删除任何东西。任何人都可以帮助我。我在上面的代码中犯了什么错误。
预期产出:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>
答案 0 :(得分:2)
不要使用正则表达式来执行此操作。 PowerShell为您提供处理XML所需的一切。
$xml = [xml] @"
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
"@
$xml.runtime.assemblyBinding.RemoveAll()
$xml.Save("c:\temp\test.xml")