SlowCheetah не преобразует файл в сборку
У меня есть проект, который я пытаюсь использовать для SlowCheetah.
Я создал свой файл конфигурации (Test.web.config) и все преобразования, которые я хочу использовать
(Debug_Mock.config, Debug_SQL.config, Release)
в моей конфигурации сборки у меня есть событие post-build, которое должно скопировать преобразованный файл в другой каталог, но файл не может быть найден
(ошибка xcopy завершена с кодом 4)
SlowCheetah, похоже, не преобразует файл и не помещает его в выходной каталог (папку bin), как я ожидал.
У кого-нибудь есть идеи относительно того, почему это не происходит, может быть, где-то где-то?
FYI: Этот процесс работает на другой машине с тем же проектом. Насколько я могу сказать то же самое. Но я, возможно, не смотрю в нужном месте.
Ответы
Ответ 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 для некоторых деталей.
Это была моя проблема - потратил три часа на его отладку...