NuGet Package преобразува конфигурационен преобразуващ файл

Има ли начин да накарате 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, но и това не помогна.)


person doug144    schedule 12.07.2015    source източник
comment
Свързани: stackoverflow.com/q/30945716/38368   -  person Danny Varod    schedule 16.07.2015
comment
Поставих въпрос относно това в блога на nuget.   -  person Gyula Kósa    schedule 03.08.2016


Отговори (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 файла, така че да бъде взет, когато е пакетиран.

person ericmooney    schedule 24.11.2015