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