Web.config transforms - el manual que falta
Puedes leer la documentación de transformaciones de web.config.aquí yahí, pero hay dos elefantes blancos que nadie parece discutir:
¿Cómo se realiza una sustitución variable en unaCondition
oXPath
transformar, y ...Puede unLocator
sersignificativamente anidado dentro de unTransform
?Permítanme darles un ejemplo que se beneficiaría de cualquiera de esas opciones. Supongamos que tengo esto:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Supongamos que quiero borrar completamente eldependentAssembly
nodo, y sus hijos, que coincide con el xpath//runtime/assemblyBinding/dependentAssembly[assemblyIdentity@name='System.Web.Mvc']
. Para hacer eso, podría querer algo como esto:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="System.Web.Mvc"
xdt:Remove
xdt:Locator="Condition(..[*@name=$name])"
/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Bueno obviamente hice la sintaxis.@name=$name
Residencia enconceptos de variable xpath, pero este ejemplo demuestra por qué querría esa característica. ¿Esto es compatible? ¿Cómo debo ajustar mi sintaxis para aprovechar esto? Podría poner una cadena literal, pero solo quiero saber si esto es posible.
Otra forma en que podría tratar de eliminar ladependentAssembly
nodo, es con esto:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="Remove">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" xdt:Locator="Match(name)" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Observe laTransform
está en un nodo principal y el localizador está en el nodo hoja. ¿Es legítimo lo anterior? La idea es eliminar sólo eldependantAssembly
nodo que tiene una coincidencia de localizador interna.
Dejando de lado estos dos enfoques, ¿cómo eliminaría la orientación?dependantAssembly
¿Y todos sus nodos hijos?