Преобразование конфигурации с Webdeploy, предварительный просмотр не работает - PullRequest
0 голосов
/ 12 марта 2019

Я хочу использовать преобразование конфигурации для пользовательских файлов, если я заменю ??? на MSDeployPublish, функциональность Preview не будет работать и заменит локальные файлы в решении. Однако публикация работает без использования Preview, сохраняя локальные файлы нетронутыми.

Файлы конфигурации:

AppSettings.config  
└AppSettings.Test.config  
└AppSettings.Stage.config  
└AppSettings.Release.config  
ConnectionString.config  
└ConnectionString.Test.config  
└ConnectionString.Stage.config  
└ConnectionString.Release.config  

Какое правильное имя цели, чтобы использовать преобразование для предварительного просмотра (без изменения файлов в soulution)? Способ, которым web.config работает при предварительном просмотре с помощью webDeploy

<Target Name="???">
   <TransformXml Source="App_Config\AppSettings.config" Destination="App_Config\AppSettings.config" Transform="App_Config\AppSettings.$(Configuration).config" />
    <TransformXml Source="App_Config\ConnectionStrings.config" Destination="App_Config\ConnectionStrings.config" Transform="App_Config\ConnectionStrings.$(Configuration).config" />
</Target>

Я не хочу использовать какие-либо расширения, такие как SlowCheetah, просто встроить функциональные возможности.

<Target Name="Build"> также работает

ОБНОВЛЕНИЕ 1

Мне удалось опубликовать без изменений локальные файлы конфигурации:

Destination="$(_PackageTempDir)\App_Config\ConnectionStrings.config"

Но предварительный просмотр все еще не трансформирует конфиги (также, когда я определяю сообщение для вывода, оно не появляется). Какая черная магия происходит, когда я нажимаю «Предварительный просмотр» на экране публикации?

Я пробовал с целями: TransformWebConfigCore, CopyAllFilesToSingleFolderForPackage, GatherAllFilesToPublish

1 Ответ

0 голосов
/ 14 марта 2019

Я сделал это.

Имя цели должно быть пользовательским именем, которое не существует.Тогда атрибут AfterTargets должен быть указан со значением Package.Эта цель происходит почти в конце цепочки и обеспечивает создание каталога $(_PackageTempDir).

Преобразования выполняются в каталоге пакета.Этот способ гарантирует, что при предварительном просмотре с помощью веб-развертывания он будет сравнивать файлы правильно и без изменения локальных файлов в системе контроля версий.

Вот определение:

<Target Name="CustomConfigTransform" AfterTargets="Package">
  <TransformXml Source="App_Config\AppSettings.config" Destination="$(_PackageTempDir)\App_Config\AppSettings.config" Transform="App_Config\AppSettings.$(Configuration).config" />
  <TransformXml Source="App_Config\ConnectionStrings.config" Destination="$(_PackageTempDir)\App_Config\ConnectionStrings.config" Transform="App_Config\ConnectionStrings.$(Configuration).config" />
</Target>

Конечно, может быть лучшеКстати: в цели CollectWebConfigsToTransform из Microsoft.Web.Publishing.targets она должна каким-то образом знать, что есть больше файлов конфигурации для преобразования.Но в настоящее время понятия не имею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...