Web.config transformiert - das fehlende Handbuch
Sie können die Dokumentation zu web.config transforms lesenHier undDort, aber es gibt zwei weiße Elefanten, die niemand zu diskutieren scheint:
Wie führt man eine Variablensubstitution in a durch?Condition
oderXPath
transformieren und ...Kann einLocator
Seinsinnvoll verschachtelt in einemTransform
?Lassen Sie mich ein Beispiel nennen, das von einer dieser Optionen profitieren würde. Angenommen, ich habe Folgendes:
<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>
Angenommen, ich möchte das vollständig löschendependentAssembly
Knoten und seine untergeordneten Elemente, die dem xpath entsprechen//runtime/assemblyBinding/dependentAssembly[assemblyIdentity@name='System.Web.Mvc']
. Dazu möchte ich vielleicht Folgendes:
<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>
Nun, offensichtlich habe ich die Syntax erfunden@name=$name
beyogen aufxpath variable Konzepte, aber dieses Beispiel zeigt, warum ich diese Funktion haben möchte. Wird das unterstützt? Wie muss ich meine Syntax anpassen, um dies zu nutzen? Ich könnte ein String-Literal eingeben, aber ich möchte nur wissen, ob dies möglich ist.
Auf eine andere Weise könnte ich versuchen, das zu löschendependentAssembly
Knoten ist mit diesem:
<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>
Beachten Sie dieTransform
befindet sich auf einem übergeordneten Knoten, und der Locator befindet sich auf einem Blattknoten. Ist das oben Genannte legitim? Die Idee ist, nur die zu entfernendependantAssembly
Knoten mit einer internen Locator-Übereinstimmung.
Abgesehen von diesen beiden Ansätzen, wie würden Sie vorgehen, um das Targeting zu löschen?dependantAssembly
und alle seine untergeordneten Knoten?