2012-10-09 12 views
6

をあなたはweb.configファイルは、ドキュメントherethereを変換しますが、2白い象は誰も議論するようでないことがあります読み取ることができます。Web.configファイルを変換 - 欠落しているマニュアル

  1. を使用すると、変数置換を実行するにはどうすればよいですConditionまたはXPath変換、...
  2. LocatorTransform内にネスト有意義ことはできますか?

これらのオプションのいずれかを利用する例を挙げておきます。私はこれを持っていると仮定します。

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

は、XPath //runtime/assemblyBinding/dependentAssembly[[email protected]='System.Web.Mvc']に一致する、私は完全にdependentAssemblyノードを消去すると仮定して、その子。これを行うには、私はこのような何かをしたいかもしれません:

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

まあ、明らかに私はxpath variable conceptsに基づく構文@name=$nameを占めていたが、私はその機能をしたいと思う理由は、この例が示しています。これはサポートされていますか?これを利用するために構文をどのように調整する必要がありますか?私は文字列リテラルを入れることができますが、これが可能かどうかを知りたいだけです。

<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が壮大-親ノード上で、ロケータはリーフノードである:

私はdependentAssemblyノードを削除しようとするかもしれない別の方法は、これです。上記は正当なものですか?考え方は、内部ロケータマッチを持つdependantAssemblyノードだけを削除することです。

これら2つのアプローチを除いて、ターゲットdependantAssemblyとそのすべての子ノードを削除するにはどうすればよいですか?

答えて

6

が私のために働いた、とLifeintheGridのソリューション@私は削除したかった実際のアセンブリを使用するので、私は2つを組み合わせて取得するために簡素化:

<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

このコードは私のために働きました。私は、transformをdependentAssemblyノードに移動しました。

<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

問題はassemblyBindingタグのnamespace属性です。これで私のためAspNetHelperの参考資料を削除

:Thommyのソリューション@

<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

関連する問題