xConfiguratorTask
max404.NET (, )
Сентябрь 2006
Версия 0.1
xConfiguratorTask это задание для MSBuild, позволяющее трансформировать конфигурационные файлы проекта (.cfg) во время выполнения сборки.
Задание имеет 3 параметра:
- входной файл - конфигурация, которую мы и собираемся изменять.
- трансформирующий файл - конфигурация, служащая шаблоном для трансформации
- тип трансформации - определяет, какое именно действие будет выполняться. Необязательный параметр, по умолчанию "Replace"
Трансформация не затрагивает мета-тэгов конфигурации, за исключением добавления мета-тэга "transformed-by-xConfiguratorTask", в который записывается время последней обработки.
Типы трансформации
- Replace: Заменяет (создавая, если нужно) значения узлов входной конфигурации значениями, заданными в шаблоне. Если Описание узла начинается с "@ignore", то этот узел не участвует в замене, но дочерние узлы этот параметр не затрагивает.
- Cut: Вырезает узлы, присутствующие в шаблоне из входной конфигурации. Если Описание узла начинается с "@ignore", то этот узел не вырезается, дочерние узлы этот параметр также не затрагивает.
- Restrict: Ограничивает узлы входной конфигурации только теми, что присутствуют в шаблоне. Если Описание узла начинается с "@ignore", то этот узел не трансформируется, дочерние узлы при этом не проверяются.
Использование задания
Для применения задания необходимо прописать его в файле проекта (*.csproj), например
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask
TaskName="Custom.Tasks.xConfiguratorTask"
AssemblyFile="c:\ProgramFiles\Max404\xConfiguratorTask\xConfiguratorTask.dll" />
...
<Target Name="AfterBuild">
<Copy
SourceFiles="$(MSBuildProjectDirectory)\ClientCore.exe.cfg"
DestinationFiles="$(OutputPath)ClientCore.exe.cfg" />
<xConfiguratorTask
TransformType="Replace"
InputFile="$(OutputPath)ClientCore.exe.cfg"
TransformFile="$(MSBuildProjectDirectory)\ClientCore.exe.Replace.Release.cfg" />
<xConfiguratorTask
TransformType="Cut"
InputFile="$(OutputPath)ClientCore.exe.cfg"
TransformFile="$(MSBuildProjectDirectory)\ClientCore.exe.Cut.Release.cfg" />
<xConfiguratorTask
TransformType="Restrict"
InputFile="$(OutputPath)ClientCore.exe.cfg"
TransformFile="$(MSBuildProjectDirectory)\ClientCore.exe.Restrict.Release.cfg" />
</Target>
</Project>
UsingTask - необходимо для указания MSBuild-у откуда брать задание.
Copy - копируем файл ClientCore.exe.cfg из проекта в выходной каталог (где будет лежать сборка)
первый xConfiguratorTask - трансформирует файл ClientCore.exe.cfg в выходном каталоге методом Replace используя шаблон ClientCore.exe.Replace.Release.cfg из каталога проекта
следующие xConfiguratorTask продолжают трансформацию файла ClientCore.exe.cfg в выходном каталоге