Я ищу способ заменить несколько атрибутов в сгенерированном XML-файле из
MsBuild /t:publish command
Я работаю над старым приложением Windows Forms.У нас будет несколько веток для разработки и тестирования.
Я хочу найти способ преобразования XML-файлов манифеста {app} .application во время сборки с помощью токена.
В частности -
<deployment install="true" mapFileExtensions="true">
<subscription>
<update>
<beforeApplicationStartup />
</update>
</subscription>
<deploymentProvider codebase="__APP_UPDATE_LOCATION__" />
Этот файл создается с флагом публикации в команде MsBuild.
Я попытался включить
{app}.Release.application file in source with the following transforms:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd"
manifestVersion="1.0"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns="urn:schemas-microsoft-com:asm.v2"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1"
xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2"
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<deployment>
<deploymentProvider codebase="__APP_UPDATE_LOCATION__" xdt:Transform="Replace" xdt:Locator="Match(codebase)" />
</deployment>
</asmv1:assembly>
Конфигурация сборки установлена в Release (я подтвердил это с преобразованным app.config - там работают токены).
Когда я запускаю задачу Преобразование файлов в сборке - я получаю сообщение об ошибке:
##[warning]Unable to apply transformation for the given package.
Будут признательны за любые идеи о том, как маркировать эти XML-файлы.Единственное другое решение, которое я могу подумать, это передать UpdateUrl во время выполнения команды MsBuild.Но это потребовало бы от меня выполнения команды N раз для каждой среды и генерирования N числа артефактов сборки.
Я бы предпочел собрать его один раз - вставить целевые токены развертывания и заменить токены действительными значениями во время конвейера выпуска.