Самая важная вещь, которую нужно отметить, это то, что элемент, который вы хотите удалить, наследует пространство имен по умолчанию xmlns="urn:schemas-microsoft-com:asm.v1"
. Тем не менее, ваша попытка XPath не будет ничего соответствовать, так как она не учитывает пространство имен.
Вы можете либо игнорировать пространство имен (не рекомендуется), либо создать префикс, указывающий на пространство имен по умолчанию, и использовать этот префикс в XPath, например:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:pref="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove" xdt:Locator="XPath(./pref:assemblyIdentity[@name='System.Net.Http']/..)">
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Я предпочитаю использовать Condition
, как предлагается в связанном ответе:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:pref="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove" xdt:Locator="Condition(pref:assemblyIdentity/@name='System.Net.Http')">
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>