В итоге я использовал опцию -u -Update , чтобы создать новое развертывание для QA на основе Production.
Вот шаги, которые я сделал для проверки подтверждения
- создать простое приложение WPF
- скопировал mage.exe в проект, так как Visual Studio не может разрешить его во время сборки
- Добавлен текст ниже к посту сборки проекта
cd "$ (TargetDir)"
"$ (ProjectDir) mage.exe" -Новое приложение -Name $ (ProjectName) -p msil -TrustLevel FullTrust -Version 1.0.0.0 -FromDirectory. -ToFile ". \ $ (TargetFileName) .manifest"
"$ (ProjectDir) mage.exe" -New Deployment -Install false -Name $ (ProjectName) -p msil -Version 1.0.0.0 -AppManifest ". \ $ (TargetFileName) .manifest" -ToFile ". \ $ (Имя_целевого_объект) .Application "
"$ (ProjectDir) mage.exe" -Update ". \ $ (TargetName) .application" -Install false -Name $ (ProjectName) .QA -p msil -Version 1.0.0.0 -AppManifest ". \ $ ( TargetFileName) .manifest "-ToFile". \ $ (TargetName) .QA.application "
Мне нужно было перейти на "$ (TargetDir)" через cd "$ (TargetDir)" , потому что mage не будет обрабатывать каталоги и пути к файлам правильно, когда я дал ему пути с пробелами, которые заключены в двойные кавычки. Чтобы обойти это, я установил в текущем каталоге папку, из которой создаются файлы.
2-я строка создает файл манифеста
3-я строка создает файл развертывания Production .
В четвертой строке создается файл развертывания QA из файла развертывания Production . ( ПРИМЕЧАНИЕ: Я добавляю QA в файл развертывания и Имя приложения .)
4-я строка вызывает создание 2-го файла приложения. При запуске обоих приложений они будут иметь одинаковые двоичные файлы, но ApplicationDeployment.UpdateLocation будет отличаться для каждого из них. Один будет иметь имя $ (TargetName) .application, а другой будет иметь имя $ (TargetName) .QA.application. В своем коде я могу использовать это, чтобы определить, какая «Версия» приложения была запущена ( QA или Production )