Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

  • Включить многословие сборки (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

  • Попробуйте переустановить медленный Cheetah.

Ответ 2

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

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

Положите это:

<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" />

Ответ 3

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

  • щелкните правой кнопкой мыши по решению
  • "Управление пакетами NuGet для решения...", найдите SlowCheetah
  • нажмите "Управление"
  • отмените выбор проекта и нажмите "ОК"
  • снова нажмите "Управление".
  • выберите свой проект и нажмите еще раз "ОК"

Это приведет к восстановлению отсутствующего файла.

Ответ 4

После переустановки, как описано выше, мне нужно было добавить узлы 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>

Ответ 5

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

Ответ 6

С 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>

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

Ответ 7

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

См. Https://github.com/Microsoft/slow-cheetah/issues/182 для некоторых деталей.

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