2012-10-09 11 views
6

आप web.config प्रलेखन here और there बदल देती है पढ़ सकते हैं, लेकिन दो सफेद हाथी है कि कोई भी चर्चा करने के लिए लगता है कि कर रहे हैं:Web.config बदल देती है - लापता मैनुअल

  1. कैसे आप में एक चर प्रतिस्थापन करते हैं एक Condition या XPath को बदलने, और ...
  2. एक Locator हो सकता है सार्थक एक Transform अंदर नेस्टेड?

मुझे ऐसा उदाहरण दें जो उन विकल्पों में से किसी एक से लाभान्वित होगा। मान लीजिए मैं इस है:

<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> 

मान लीजिए मैं पूरी तरह से dependentAssembly नोड को मिटाना चाहते हैं, और अपने बच्चों, कि xpath //runtime/assemblyBinding/dependentAssembly[[email protected]='System.Web.Mvc'] मेल खाता है। ऐसा करने के लिए, मैं कुछ इस तरह देख सकते हैं:

<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> 

खैर स्पष्ट रूप से मैं वाक्य रचना @name=$name पर xpath variable concepts आधारित थे, लेकिन इस उदाहरण दर्शाता है कारण है कि मैं उस सुविधा चाहते हैं। क्या यह समर्थित है? इसका लाभ उठाने के लिए मुझे अपने वाक्यविन्यास को कैसे समायोजित करना चाहिए? मैं एक स्ट्रिंग अक्षर में डाल सकता था, लेकिन मैं सिर्फ यह जानना चाहता हूं कि यह संभव है या नहीं।

एक और तरीका है मैं dependentAssembly नोड को हटाने का प्रयास हो सकता है, इस के साथ है:

<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> 

सूचना Transform एक भव्य माता पिता के नोड पर है, और लोकेटर पत्ती नोड पर है। क्या उपर्युक्त वैध है? विचार केवल dependantAssembly नोड को निकालना है जिसमें आंतरिक लोकेटर मैच है।

ये दोनों दृष्टिकोण अलग-अलग हैं, आप लक्ष्यीकरण dependantAssembly और उसके सभी बच्चे नोड्स को हटाने के बारे में कैसे जाएंगे?

उत्तर

6

@ Thommy के समाधान मेरे लिए काम किया, और प्राप्त करने के लिए @ LifeintheGrid के समाधान वास्तविक विधानसभाओं मैं दूर करने के लिए चाहता था इस्तेमाल किया, तो मैं दो संयुक्त और सरल बनाया :

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly xdt:Transform="RemoveAll" 
          xdt:Locator="Condition(starts-with(./_defaultNamespace:assemblyIdentity/@name,'Microsoft.VisualStudio.QualityTools'))"> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
3

यह कोड मेरे लिए काम कर रहा है। मैं ट्रांसफॉर्म को आश्रित Assembly नोड में स्थानांतरित कर दिया।

<runtime> 
    <assemblyBinding> 
    <!-- ending /dependentAssembly is required or tranforms fail --> 
    <dependentAssembly xdt:Transform="Remove" xdt:Locator="Condition(assemblyIdentity/@name='Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter')" ></dependentAssembly> 
    <dependentAssembly xdt:Transform="Remove" xdt:Locator="Condition(assemblyIdentity/@name='Microsoft.VisualStudio.QualityTools.Common')" ></dependentAssembly> 
    <dependentAssembly xdt:Transform="Remove" xdt:Locator="Condition(assemblyIdentity/@name='Microsoft.VisualStudio.QualityTools.ExecutionCommon')"></dependentAssembly> 
    <dependentAssembly xdt:Transform="Remove" xdt:Locator="Condition(assemblyIdentity/@name='Microsoft.VisualStudio.QualityTools.Resource')" ></dependentAssembly> 
    </assemblyBinding> 
</runtime> 
7

समस्या असेंबली बाइंडिंग टैग पर नेमस्पेस विशेषता है।

इस के साथ मेरे लिए AspNetHelper सन्दर्भ कार्यों हटाना:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly xdt:Transform="Remove" 
          xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Microsoft.VisualStudio.Enterprise.AspNetHelper')"> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
+0

यह काम करता है और इस प्रश्न के उत्तर के रूप में चिह्नित किया जाना चाहिए। – sebastiaan