3

我正在尝试使用 XDT 转换为我的 NuGet 包创建 web.config 安装程序。

我想转换 web.config 文件:

<configuration>
    <system.web>
    </system.web>
</configuration>

看起来像这样:

<configuration>
    <system.web>
        <httpHandlers>
            <add path="*." verb="*" type="CustomHandler" />
        </httpHandlers>
    </system.web>
</configuration>

以下是我尝试过的转换:

变换#1:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <system.web>
        <httpHandlers>
            <add path="*." verb="*" type="CustomHandler" xdt:Transform="Insert" />
        </httpHandlers>
    </system.web>
</configuration>

这仅在目标 web.config 已经包含一个<httpHandlers />部分时才有效。

在上面的示例中(注意,没有<httpHandlers />部分),这会导致错误:

源文档中没有元素匹配“/configuration/system.web/httpHandlers/add”

变换#2:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <system.web>
        <httpHandlers xdt:Transform="Insert">
            <add path="*." verb="*" type="CustomHandler" />
        </httpHandlers>
    </system.web>
</configuration>

这在上面的示例中按预期工作,但是给定一个带有预先存在的<httpHandlers />部分的 web.config 文件,该部分是重复的。

请记住,这是针对 NuGet 包的,我无法对用户配置的状态做出假设。

我是 XDT 变换的新手,所以可能错过了一些明显的东西。

4

1 回答 1

3

看起来这会成功

VS2012 中的新功能,xdt:Transform="InsertIfMissing".

于 2013-08-14T11:04:52.670 回答