Как опубликовать приложение ClickOnce с конвейером Azure DevOps в разных средах? - PullRequest
0 голосов
/ 12 ноября 2019

Уже несколько дней я пытаюсь опубликовать свое приложение ClickOnce с помощью Azure DevOps Pipeline. Прежде чем перейти к деталям, вот что я хотел бы сделать из моего вида релиза:

enter image description here

Я начал с одного артефакта и 2 этапа выпуска, модифицируя конфигурациюфайл .deploy с промежуточными переменными на этапе подготовки и изменения файла config.deploy с производственными переменными на этапе производства. Развертывание работало нормально, но установка приложения не работала из-за системы проверки хеша.

Поэтому я решил создать 2 сборки с 2 артефактами. Я переименовал классическое падение в _drop_staging во время моей первой сборки и drop_production для моей второй сборки. Я надеялся, что система сборки (MSBuild) смогла выбрать правильный файл app.Debug.config, а затем файл app.Release.config во время процесса сборки и публикации.

Вот мое определение сборки

Build definition

Вот мои аргументы сборки

/target:publish 
/p:ApplicationVersion=$(Build.BuildNumber) 
/p:PublishURL=http://app-staging.example.com/   
/p:UpdateEnabled=true  
/p:UpdateMode=Foreground  
/p:ProductName="App Staging" 
/p:OutputPath="$(build.ArtifactStagingDirectory)\Publish\\"

Конфигурация настроена на Staging для первой сборки, затем на Production для второй сборки. У меня, конечно, есть определение Постановки и Построения в Visual Studio. В моем проекте есть app.config с app.Staging.config и app.Production.config.

Я не могу просто добавить atask для преобразования моего конфигурационного файла после сборки, потому что я не буду уважать хэш. Я должен найти способ сказать моей сборке использовать правильный файл конфигурации преобразования xml. Я не вижу другого решения или mybe применяя это преобразование перед сборкой? Является ли это возможным? Каковы ваши решения?

...