Записки на лету

Соединяем CRM 2011 c TFS при помощи SolutionPackager

Что такое Solution Packager?

Solution packager это маленькое приложение командной строки, которое позволяет распаковывать и запаковывать zip-архивы решений MS Dynamics CRM 2011. Это приложение не просто распаковывает архив, оно разбивает решение на отдельные файлы для каждой формы, представления, веб-ресурса и т.д. Благодаря этому Solution packager позволяет перейти на новый уровень контроля версий для решений. Раньше было весьма трудно эффективно хранить Решения в системе контроля версий. Обычно все сводилось к тому, что в TFS чекинились архивы решений, что к контролю версий имело мало отношения.

Скачать его можно вместе с пакетом SDK скачать который можно здесь.

Использование Solution Packager

Обязательные параметры:

  • /action: {Extract|Pack} (Распаковать|Запаковать)
  • /zipfile: (Путь к файлу Решения)
  • /folder: {(Путь к папке с распакованным решением)

Для того чтобы распаковать решение c:\Solutions\TestSolution_1_0.zip в папку c:\Solutions\TestSolution_1_0
Полная команда

solutionpackager.exe /action:Extract /zipfile:c:\Solutions\TestSolution_1_0.zip /folder:c:\solutions\TestSolution_1_0

Сокращенная версия

solutionpackager.exe /a:Extract /z:c:\Solutions\TestSolution_1_0.zip /f:c:\solutions\TestSolution_1_0

В результате мы получим папку с довольно большим количеством подпапочек с файлами .xml, которые уже куда удобнее хранить в TFS.

SolPackager

Для того чтобы запаковать решение c:\Solutions\TestSolution_1_0 обратно в пакет c:\Solutions\TestSolution_1_0.zip
Полная команда

solutionpackager.exe /action:Pack /zipfile:c:\Solutions\TestSolution_1_0.zip /folder:c:\solutions\TestSolution_1_0

Сокращенная версия

solutionpackager.exe /a:Pack /z:c:\Solutions\TestSolution_1_0.zip /f:c:\solutions\TestSolution_1_0

Дополнительные параметры

Есть, также, дополнительные параметры (жирным выделены параметры по-умолчанию):

  • /packagetype: {Unmanaged|Managed|Both} (тип решения, пока не очень разобрался зачем);
  • /allowWrite: {Yes|No} (используется только при распаковке и регулирует удаление и перезапись уже существующих файлов в папке для распаковки);
  • /allowDelete: {Yes|No|Prompt} (используется только при распаковке и регулирует удаление лишних файлов в папке для распаковки);
  • /clobber (используется только при распаковке и разрешает удаление и перезапись уже существующих файлов с пометкой «Только для чтения» в папке для распаковки);
  • /map: (путь к файлу .xml с настройками маппинга);
  • /errorlevel: {Off|Error|Warining|Info|Verbose} (уровень логирования);
  • /log: (путь к файлу лога).

Более подробно смотрите документацию CRM 2011 SDK.

Что я успел заметить это то, что Solution packager не работает с русскими символами в путях и, так же, не забывайте заключать путь в кавычки если он имеет пробелы.

 
Comments
Alexey Shytikov

Кстати, запаковка солюшена обратно в zip архив не работает. И решения этому нет. Не понятно, как можно было выпустить такой тул…

Это, конечно грусно.
Я, к сожалению, так и не добрался до этой тулзы.
Времени нет пока.

А что именно не работает?
Мне коллега на днях рассказал, что они с помощью этой тулзы «смерджили» два параллельно разрабатываемых решения в одно.
У них все сработало.