visual-studio-2010 - Web.config 转换 - 缺少的手册

标签 visual-studio-2010 xslt deployment xpath web-config

您可以阅读 web.config 转换文档 herethere ,但有两只白象似乎没人讨论:

  • 如何在 Condition 中执行变量替换或 XPath变换和...
  • 可否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[assemblyIdentity@name='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及其所有子节点?

    最佳答案

    问题在于 assemblyBinding 标记上的命名空间属性。

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

    关于visual-studio-2010 - Web.config 转换 - 缺少的手册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792325/

    相关文章:

    visual-studio-2010 - Visual Studio 和 Visual C++ IDE 有什么区别

    c# - 如何阻止 Visual Studio 在我的 UserControl 中生成 Setter 调用?

    java - 删除给定节点上的 XML 内容并重新排列输出文件格式

    XSLT 选择具有给定值的另一个属性的节点的属性值

    java - 自动化框架 - 如何使用 TestNG 和 selenium java 自动化测试生成简单的表格形式 html 报告

    iphone - 将应用程序部署到 iPhone 中的设备时出错

    c++ - 更改代码生成后以代码 255 退出的特定代码行

    使用 Ant 取消部署/部署 Tomcat

    python - Heroku 推送被拒绝,无法编译 Python/django 应用程序 (Python 2.7)

    c# - 如何移动和调整通过绘图创建的线条的大小?