4

有没有办法让 NuGet 包转换配置转换文件?例如,当我希望我的 NuGet 包编辑web.config文件时,我会创建一个web.config.install.xdt文件。但是,如果我希望我的 NuGet 包编辑web.config.debug文件怎么办?

我尝试制作一个web.config.debug.install.xdt文件,但遇到了一个问题:我无法让转换插入本身就是 xdt 转换属性的属性。就像是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration  xmlns:xdt1="http://schemas.microsoft.com/XML-Document-Transform">

  <system.serviceModel >
    <client xdt1:Transform="Insert">
      <endpoint address="http://blah.blah" binding="basicHttpBinding" contract="Test.Contract" 
                name="TestWs" xdt:Transform="Replace" xdt:Locator="Match(name)"/>
    </client>
  </system.serviceModel>

</configuration>

(我尝试更改 xdt 的命名空间,但这也无济于事。)

4

1 回答 1

1

虽然这可能不是最好的答案,但当我发现自己处于这种情况时,它确实为我完成了工作:

使用“旧”方法进行转换,而不是 xdt 方式。

https://docs.nuget.org/create/Transforming-Configuration-Files-Using-dotTransform-Files.md

这似乎运作良好,只需确保适当的 xmlns 属性位于 .transform 文件中。

例如,如果您想转换当前如下所示的 web.qa.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      <appSettings>
            <add key="Tier" value="qa" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
      </appSettings>
 </configuration>

您可以添加一个元素:

<add key="RedirectUri" value="yourRedirectUriForQA" xdt:Transform="Replace" />

通过将以下 web.qa.config.transform 文件添加到 Nuget 包中:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
         <add key="RedirectUri" value="yourRedirectUriForQA" xdt:Transform="Replace" />
    </appSettings>
</configuration>

只需确保将其添加到 .nuspec 文件中,以便在打包时获取它。

于 2015-11-24T18:22:24.853 回答