Как применить XML Преобразования файлов в приложении ClickOnce через Azure конвейер выпуска DevOps? - PullRequest
0 голосов
/ 06 апреля 2020

Мой конвейер выпуска развертывает приложение в нескольких средах.

В зависимости от среды я пытаюсь настроить преобразования файлов для выполнения, хотя я не уверен, как это настроить, если это вообще возможно. У меня уже есть файл app.Release.config, настроенный в репозитории, но я не уверен, где отсюда go.

В моих конвейерах выпуска я включил встроенную опцию XML Transformation, но на самом деле она ничего не делает. Я также попытался добавить задачу преобразования файлов и явно ввел пути к файлу преобразования, а также к файлу .exe.config, но тоже не повезло. Я получаю «Невозможно применить преобразование для данного пакета».

Это как-то связано с несоответствием имен? Поскольку это приложение ClickOnce, во время компиляции имя app.config изменяется на {nameOfApplication} .exe.config. Я заблудился, как выполнить sh то, что мне нужно, и начинаю думать, что это невозможно?

1 Ответ

0 голосов
/ 08 апреля 2020

Как применить XML Преобразования файлов в приложении ClickOnce через Azure Конвейер выпуска DevOps?

Задача преобразования файлов должна хорошо работать в вашем сценарии если мы можем выполнить его предварительные условия:

1. Убедитесь, что файл преобразования (app.Release.config) и исходный файл ({nameOfApplication} .exe.config) находятся по одному пути.

2.Убедитесь, что ваш файл преобразования имеет правильный синтаксис xdt, образец здесь.

3. Выберите вместо old 1.0. *1016* последнюю версию задачи преобразования файла 2.0-preview. 1018 * 4.Попробуйте использовать действительное имя файла при установке Xml Transformation rules. (Используйте {nameOfApplication}.exe.config вместо *.exe.config)

На мой взгляд, #1 и #3 выше всегда являются прямой причиной ошибки Unable to apply transformation for the given package. Проверяйте их внимательно!

Некоторые подробности для приведенных выше четырех советов:

1.В файле проекта (xx.csproj) У меня есть этот контент, чтобы убедиться, что файл преобразования будет быть скопированы в выходную папку. Так что он будет в той же папке с исходным файлом xxx.exe.config.

<Content Include="App.release.config" >
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

2.Мой тест App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
      <add key="IsPackage" value="false" />
    </appSettings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
    </startup>
</configuration>

Мой тест App.release.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration  xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="IsPackage" value="true" />
  </appSettings>
</configuration>

3.Используйте последнюю версию, которая устраняет некоторые проблемы:

enter image description here

4. В некоторых тестах действительное имя работает лучше, чем что-то вроде *.exe.config, когда вы уже знаете имя приложения:

enter image description here

Надеюсь, что все выше помогает:)

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