Как вставить элементы конфигурации, если они еще не существуют во время установки NuGet?
У меня есть проект пакета NuGet, который до сих пор содержал App.config.transform
файл. Это использовалось для вставки записей конфигурации, но проблема в том, что записи всегда вставляются в конфигурацию целевого проекта (обычно делает его недействительным из-за новых дубликатов).
Я хотел бы только вставить элементы в цель app.config
если они не существуют - то есть, что их положение и name
или же key
атрибут не существует. Я хотел бы избежать перезаписи или добавления, если их value
атрибут изменился.
Я пытаюсь сделать это новое преобразование с помощью app.config.install.xdt
файл.
Например, целевые проекты (при первой установке пакета NuGet) не содержат следующее section
элемент:
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
</configSections>
</configuration>
Я хотел бы вставить configSections
блок и section
Элемент, если они, с уважением, не существуют.
Если configSections
блок существует, но не содержит section
элемент с name="specFlow"
Я бы хотел, чтобы это было добавлено.
Если этот конкретный section
элемент существует, но type attribute
Значение было изменено, я не хочу его перезаписывать.
Чтобы попробовать это до сих пор, я использовал различные перестановки xdt:Transform="Insert"
атрибутов. Например:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configSections xdt:Transform="Insert">
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
</configSections>
</configuration>
Я попытался положить преобразование на configSections
стихия, на человека section
элементы и один из каждого и т. д. Ничто не дало желаемого эффекта. Как правило, все, что я получаю, это либо ничего не происходит, либо большая часть файла конфигурации полностью заменяется содержимым файла преобразования.