Как применить преобразования xdt к app.config при установке / обновлении пакета nuget?

Недавно я обновил один из своих пакетов nuget, так что теперь он требует, чтобы параметр приложения присутствовал в проекте-потребителе. Я хотел бы добавить преобразование app.config в пакет, чтобы любой, кто использует новую версию моего пакета, имел в этом параметре приложения некоторые значения по умолчанию. С этой целью я подписался на этот пост, чтобы создать файл app.config.install.xdt.

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

Я также добавил строку моего nuspec в соответствии с этим сообщением о стеке

     <file src="\Content\app.config.install.xdt" target="app.config" />

Однако, когда я устанавливаю / обновляю этот пакет на потребителе, я не вижу, чтобы этот параметр приложения отображался в app.config потребителя. Есть ли еще один шаг, который мне не хватает?


person KnightFox    schedule 09.09.2015    source источник
comment
Вы также должны добавить xdt: Transform = InsertIfMissing в запись ‹add key ... /›. В противном случае, когда вы обновите свой пакет, ключ будет вставлен снова.   -  person Calvin    schedule 18.10.2016


Ответы (1)


Запись в файле NUSPEC выглядит некорректно. Должно получиться что-то вроде:

 <file src="Content\app.config.install.xdt" target="content" />

Ваша цель - app.config, что неверно. Преобразование .xdt должно находиться в каталоге содержимого внутри пакета NuGet.

person Matt Ward    schedule 10.09.2015
comment
Что вы имеете в виду - преобразование .xdt должно находиться в каталоге содержимого внутри пакета NuGet? Вы хотите сказать, что процесс заключается в создании файла nupkg, затем его открытии и изменении? Или вы имеете в виду, что в проекте VS создать папку с именем «content» и поместить туда файлы .xdt? - person barrypicker; 02.03.2016
comment
Это означает, что внутри пакета NuGet (.nupkg) должен быть каталог содержимого. Вам не нужно открывать и изменять файл .nupkg, вы можете создать его с помощью команды nuget pack. Вам не нужно создавать папку в проекте Visual Studio. - person Matt Ward; 02.03.2016