Сбой преобразования SlowCheetah при использовании Visual Studio Online

#azure #tfs #visual-studio-2013 #azure-devops #slowcheetah

#azure #tfs #visual-studio-2013 #azure-devops #slowcheetah

Вопрос:

Мы используем SlowCheetah для выполнения app.config преобразований для проекта. Однако при попытке перенести процесс сборки в Visual Studio Online я больше не могу создавать решение. Сбой сборки, поскольку .dll.config файл не может быть найден. Я считаю, что это вызвано SlowCheetah.

Вот что мы используем : SlowCheetah 2.5.10.6 . В качестве шаблона сборки я использую этот TfvcTemplate.12.xaml процесс. Моя версия NuGet — 2.8, и для решения включено восстановление пакета.

Я столкнулся с несколькими похожими проблемами, но большинство решений применимо к VS2012 или более старым версиям SlowCheetah и NuGet.


Обновление от 17 июня

После более тщательного просмотра файла журнала, созданного MSBuild, я обнаружил, что преобразование выполнено успешно, и когда мой проект собран, я вижу в журнале эту строку: Copying file from "objReleaseAssembly.Worker.csproj-sc.App.config" to "C:abinAssembly.Worker.dll.config" .

Однако у меня также есть проект облачной службы Azure, который создается следующим. Здесь происходит сбой сборки.

Это то, что я нахожу в журнале: C:asrcProjectFolderAssembly.AzureAssembly.Azure.ccproj(101,5): error MSB3030: Could not copy the file "..Assembly.WorkerbinReleaseAssembly.Worker.dll.config" because it was not found.

Таким образом, очевидно, что SlowCheetah создает преобразованный конфигурационный файл и сохраняет его как .csproj-sc.app.config файл, в то время как проект Azure ищет обычный app.config файл. Интересно, что локальное построение проекта Azure работает нормально.

Комментарии:

1. Тогда, вероятно, это ошибка в целях Azure. Если он не работает с SlowCheetah, он также завершится ошибкой с BCL NuGet pkg, поскольку они используют тот же метод для обновления app.config.

Ответ №1:

В итоге я исправил проблему, изменив SlowCheetah.Transforms.targets файл в Properties папке.

В строке 157 я вставил следующий код, чтобы скопировать преобразованный файл по пути, который ожидает Azure:

 <Copy Condition=" '$(_Sc_HasAppConfigTransform)'=='true' "
  SourceFiles="$(__SC_IntermediateAppConfig)"
  DestinationFiles="$(MSBuildProjectDirectory)binRelease$(MSBuildProjectName).dll.config"
  SkipUnchangedFiles="true" ContinueOnError="false" />