2015-01-30 1 views
3

У меня есть следующий XML в моей веб-конфигурации и в режиме выпуска. Мне нужно удалить секцию dependAssembly в зависимости от атрибута name своего дочернего элемента: assemblyIdentity. Я попробовал ответить здесь: xdt transform locator that matches subnode content, но не повезло. Моя web.config что-то вроде этого:Преобразование Web Config для выпуска

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Resource" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <codeBase version="10.0.0.0" href="file:///c:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.DLL" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Я попытался следующие в моей web.release.config, чтобы выбрать второй dependentAssembly элемент для удаления на основе дочернего элемента, но без успеха.

<runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" > 
      <dependentAssembly> 
<!-- Attempt 1 --> 
      <assemblyIdentity xdt:Transform="RemoveAll" 
      xdt:Locator="Condition(@name='Microsoft.VisualStudio.QualityTools.Resource')"/> 
      </dependentAssembly> 
     </assemblyBinding> 
<!-- Attempt 2 --> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly xdt:Transform="Remove" 
     xdt:Locator="Condition(assemblyIdentity/@name='Microsoft.VisualStudio.QualityTools.Resource')"> 
     </dependentAssembly> 
    </assemblyBinding> 
     </runtime> 
+0

https://webconfigtransformationtester.apphb.com/ полезно для преобразования. Также ваши имена dependAssembly не соответствуют предоставленной конфигурации, а также то, что находится в локаторе. – BenM

+0

Это была моя ошибка в именах сборки, я редактировал сообщение. Спасибо. Сайт, который вы предоставили, полезен, но я все еще не могу понять это –

ответ

5

Этот код работает для меня.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly xdt:Transform="Replace" xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='System.Web.Mvc')"> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> 
    </dependentAssembly>  
    </assemblyBinding> 
</runtime> 

Все кредиты сроком до @Thommy «S StackOverflow ответ на этот post.