Пакет NuGet преобразует файл конфигурации

Есть ли способ заставить пакет 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, но это тоже не помогло.)

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, чтобы он был собран при упаковке.

Другие вопросы по тегам