SlowCheetah не преобразует файл при сборке

У меня есть проект, для которого я пытаюсь использовать SlowCheetah. Я создал свой файл конфигурации (Test.web.config) и все преобразования, которые я хочу использовать (Debug_Mock.config, Debug_SQL.config, Release) в моей конфигурации сборки. У меня есть событие после сборки, которое должно скопировать преобразованный файл в другой каталог, но файл не может быть найден

(ошибка xcopy завершилась с кодом 4)

SlowCheetah, похоже, не преобразует файл и не помещает его в выходной каталог (папку bin), как я ожидал. У кого-нибудь есть идеи, почему этого не происходит, может быть, где-то в настройках?

К вашему сведению: этот процесс работает на другой машине с тем же проектом. Насколько я могу судить, такая же установка. Но может я не в том месте ищу.


person Richard S.    schedule 21.11.2012    source источник
comment
ни одно из приведенных ниже решений не сработало для меня :( в конце концов, вы заставили его работать?   -  person Иван Грозный    schedule 01.06.2016
comment
Ни одно из приведенных ниже решений не сработало и для меня. Изменения не появились даже в превью для меня.   -  person NLV    schedule 29.11.2016


Ответы (7)


  • Включите детализацию сборки (Tools -> Options -> Projects and Solutions -> Build and Run) и посмотрите, какая версия работает, а какая нет.

  • Насколько мне известно, slow-Cheetah поддерживает преобразование конфигурации для app.config файлов, но не web.configs при отладке в настоящее время. Он должен поместить преобразованный файл web.config в папку bin вашего проекта, но ваш проект по-прежнему читает из config file в корневой папке. Ознакомьтесь с событиями до и после сборки на странице http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx.

  • Вы можете запросить поддержку преобразования веб-конфигурации при отладке по адресу
    https://github.com/sayedihashimi/slow-cheetah/issues/39

  • Попробуйте переустановить Slow-Cheetah.

person user1858286    schedule 28.11.2012
comment
Это помечено как ответ, но какие шаги решили проблему? - person Travis Parks; 07.10.2013
comment
@TravisParks Для себя я установил SlowCheetah из visualstudiogallery.msdn.microsoft. com/, что позволило мне выполнить «Добавить преобразование» и «Предварительное преобразование», но не изменило конфигурацию вывода. Затем я установил SlowCheetah из nuget, и это сработало. - person ; 20.01.2014
comment
@ChrisCameron только что установил SlowCheetah на VS2013 Up5 с веб-сайта. Предварительный просмотр работает, но он не будет преобразован во время сборки. Установка из Nuget исправляет это. Спасибо! - person Esselans; 06.04.2016
comment
Спасибо. Потрачено много часов. Наконец, удаление расширения и установка из nuget исправили это! - person Gautam Jain; 23.11.2016
comment
взгляните на ответ csproj/vsproj ниже, этот ответ не решил мою проблему, но добавление группы свойств помогло - person Nathan Tregillus; 25.04.2017

Для меня я обнаружил, что проблема заключается в том, что группа свойств медленного гепарда в файле конфигурации находилась ниже раздела, где он проверял, существует ли он.

Таким образом, исправление состояло в том, чтобы просто переместить группу свойств над этой строкой куда-нибудь, что позволило бы преобразованию работать, как ожидалось.

Положи это:

<PropertyGroup Label="SlowCheetah">
  <SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.10.3\tools\))</SlowCheetahToolsPath>
  <SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
  <SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
  <SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>

Выше этого:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
person laurencee    schedule 24.11.2013
comment
Это исправило это для меня; Я использую SlowCheetah 2.5.10.3 через NuGet, и мой файл App.config не преобразовывался. Я поменял порядок двух элементов выше, и он начал работать. - person Nick Jones; 17.12.2013
comment
После локального исправления, как указано выше, сборки начали давать сбои на нашем сервере сборки Jenkins, как отмечали другие здесь: github.com/sayedihashimi/slow-cheetah/issues/114. Исправление заключалось в настройке версии SlowCheetah в SlowCheetah.transforms.targets на правильную версию 2.5.10.3. - person Nick Jones; 17.12.2013
comment
Это исправило это для меня. Я использую SlowCheetah 2.5.14. - person Jason Boyd; 30.12.2014
comment
Это исправило это для меня. Ни PropertyGroup, ни Import не были добавлены в файл vbproj моего проекта. Кроме того, я обновил номер версии в элементе SlowCheetahToolsPath. - person gillonba; 23.09.2015
comment
какая группа свойств в каком конфигурационном файле?? - person Toolkit; 20.04.2016
comment
@Toolkit файл csproj/project, в который вы добавили SlowCheetah - person laurencee; 21.04.2016

Проверьте в своем проекте, существует ли папка с именем SlowCheetah, содержащая файл SlowCheetah.Transforms.targets. Если этот файл отсутствует, попробуйте выполнить следующие действия:

  1. щелкните правой кнопкой мыши решение
  2. "Управление пакетами NuGet для решения...", найдите SlowCheetah
  3. нажмите «Управление»
  4. отмените выбор вашего проекта и нажмите «ОК»
  5. нажмите «Управление» еще раз
  6. выберите свой проект и нажмите еще раз "ОК"

Это позволит воссоздать отсутствующий файл.

person Thorsten Hüglin    schedule 14.01.2014
comment
Это было для меня. Я установил с сайта visualstudiogallery.msdn.microsoft.com/, который не создал папку. Итак, я получил Add/Preview, но преобразование на самом деле не произошло. - person ; 20.01.2014
comment
Старое решение для удаления/переустановки. Работает каждый раз! - person Tommy; 04.06.2014
comment
Папка SlowCheetah создается в папке Properties. - person YuMei; 18.09.2014
comment
это работает для меня, получается, что мы просто устанавливаем вместо плагина, забываем установить пакет nuget. Спасибо, Торстен. - person ChengWhyNot; 23.07.2016

После переустановки, как описано выше, мне нужно было добавить узлы subType и transformOnBuild в мой файл csproj, и он начал работать для меня.

<None Include="App.config">
  <SubType>Designer</SubType>
  <TransformOnBuild>true</TransformOnBuild>
</None> 
<None Include="App.QA.config">
  <DependentUpon>App.config</DependentUpon>
  <IsTransformFile>True</IsTransformFile>
</None>
person Hink    schedule 15.12.2016

Обратите внимание: вам необходимо установить расширение SlowCheetah Visual Studio И пакет nuget SlowCheetah для рассматриваемого проекта, чтобы преобразование заработало.

person Frank Liu    schedule 11.02.2017
comment
важное различие между расширением и пакетом. Мне нужно было и то, и другое для трансформации. - person BeHappy; 28.09.2017

С SlowCheetah 2.5.15 и Visual Studio 2015 мне пришлось удалить пакет nuget, а затем вручную удалить следующее из соответствующего файла .csproj:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />

а также

<PropertyGroup Label="SlowCheetah">
  <SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.15\tools\))</SlowCheetahToolsPath>
  <SlowCheetah_EnableImportFromNuGet Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
  <SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
  <SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>

Как только это было сделано и пакет nuget SlowCheetah был переустановлен, моя проблема была решена.

person James Blake    schedule 08.07.2016

В SlowCheetah 3.2.20 добавлена, гм, «функция», предназначенная для соблюдения настройки файла «Не копировать» в Visual Studio. Поэтому, если для вашего файла .config не установлено значение «Копировать всегда» или «Копировать, если новее», он не будет копировать их в выходную папку.

См. https://github.com/Microsoft/slow-cheetah/issues/182 некоторые детали.

Это была моя проблема - потратил три часа на ее отладку...

person Ken Smith    schedule 20.02.2019