Автоматизированные методы медленной сборки Cheetah
-
12-12-2019 - |
Вопрос
Я не хочу устанавливать Slow Cheetah на все серверы сборки.
Мы используем Slow Cheetah для преобразования конфигурации, и он работает совершенно нормально.Он генерирует несколько файлов app.config, и мы вносим в них изменения по желанию.
Мы настроили несколько серверов.У всех них есть свои репозитории кода, они извлекают код из командной строки и создают пакеты соответствующим образом.В этих кодах есть эти конфигурационные файлы.Но все же, когда мы компилируем приложение из командной строки, пакеты не генерируются с преобразованием, если на них не установлен slow cheetah.В остальном все работает нормально.
Мы никогда не знаем, когда настраиваем новый сервер и нового пользователя, поэтому невозможно установить Slow cheetah на каждый из них
Можно как-то использовать slow cheetah dll в приложении и вызывать метод transform вручную из него?
Спасибо
Решение
Подробный шаг по шаговому процессу, определенному здесь
http://sedodream.com/2011/12/slowchethetahxmltransformsfromaciserver.aspx
Другие советы
Как альтернатива SlowCheth, можно обрабатывать эту функциональность, отредактировав файлы проекта вручную.Это немного более громоздкое, чтобы настроить, но это означает, что у вас не требуется дополнительных DLL.
Откройте файл вашего проекта в текстовом редакторе.В нижней части файла проекта, непосредственно перед закрывающим тегом, включите следующее:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory -->
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
<AppConfigWithTargetPath Remove="app.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
.
Затем найдите в своем файле проекта строку и замените его следующим:
<ItemGroup>
<Content Include="App.config" />
<Content Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
</Content>
</ItemGroup>
.
Вам нужно добавить дополнительный контент, включите для каждой конфигурации, которую вы добавляете - к сожалению, с этим методом вы не получаете простые «Добавить преобразование» контекстного меню.
После этого это случай создания файлов в вашем каталоге проекта, а затем вы готовы к работе.Это не так, как Slick, как SlowCheth, но он сохраняет ваш код портативным.
Самая последняя версия SlowCheetah (2.5.14) доступна на Самородок.При добавлении через nuget он сохраняется в packages
папка в локальном каталоге решения (как и все пакеты nuget), что означает, что теперь она должна работать на любом сервере сборки "из коробки".
Я включаю SlowCheth в приложении, как следующее, чтобы избежать его установки на серверах, которые создают решение:
- в вашем решении root, у меня есть инструменты папок, которые содержат (среди прочего) SlowCheth
- myproject / tools / slowcheethah / slowcheeth.tasks.dll
- myproject / tools / slowchethah / slowcheeth.transforms.targets
- в (web-) приложений проекта .csproj-файл, у меня есть это:
.<PropertyGroup> <SlowCheetahTargets Condition=" '$(SlowCheetahTargets)'=='' ">$(MSBuildProjectDirectory)\..\Tools\SlowCheetah\SlowCheetah.Transforms.targets </SlowCheetahTargets> </PropertyGroup>
И это:
.<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" />
.. И, кажется, справляется с работой очень хорошо, даже при строительстве / публикации от TeamCity.
Редактировать:
Вы найдете два файла, упомянутые в
%localappdata%\Microsoft\MSBuild\SlowCheetah\v1
(drive:\Users\yourusername\AppData\Local\Microsoft\MSBuild\SlowCheetah\v1
), когда вы установили SlowCheetah в Visual Studio.