Usted puede leer web.config transforma documentación here y there, pero hay dos blancos elefantes que nadie parece discutir:Web.config transforma - el manual de falta
- ¿Cómo se realiza una sustitución de variables en un
Condition
oXPath
transformada, y ... - Puede un
Locator
ser significativa anidado dentro de unTransform
?
Déjeme dar 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 por completo el nodo dependentAssembly
, y sus hijos, que coincide con el XPath //runtime/assemblyBinding/dependentAssembly[[email protected]='System.Web.Mvc']
. Para hacer eso, puede ser que quiera 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 que compone la sintaxis @name=$name
basado en xpath variable concepts, pero este ejemplo demuestra por qué me gustaría que 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 podría tratar de eliminar el nodo dependentAssembly
, es decir 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>
Aviso del Transform
está en un nodo Grand-padres, y el localizador es el nodo hoja. ¿Es lo anterior legítimo? La idea es eliminar solo el nodo dependantAssembly
que tiene una coincidencia de localizador interno.
Dejando a un lado estos dos enfoques, ¿cómo eliminaría la segmentación dependantAssembly
y todos sus nodos secundarios?
Esto funcionó y debe marcarse como la respuesta a esta pregunta. – sebastiaan