Как настроить среду разработки DotNetNuke с контролем версий? - PullRequest
2 голосов
/ 01 декабря 2009

Моя команда разрабатывает новое веб-приложение DotNetNuke и хотела бы знать, что рекомендуется для настройки среды разработки с контролем исходного кода и автоматизированными сборками? Мы хотели бы сохранить исходный код DNN отдельно от наших пользовательских модулей и исходного кода расширений.

Шаблон скомпилированного модуля DotNetNuke для Visual Studio требует, чтобы мы хранили исходный код в каталоге DesktopModules исходного кода DNN и выводили в каталог bin исходного кода DNN. Это рекомендуемая структура? Я бы предпочел хранить файлы в разных местах, но тогда становится сложнее запускать и отлаживать их локально, так как для каждого изменения потребуется установка модуля. Кроме того, как автоматическая сборка должна развертывать какие-либо изменения?

Как другие настроили это? Есть ли рекомендуемая лучшая практика?

Ответы [ 3 ]

7 голосов
/ 05 января 2010

Для моего контроля версий я разрабатываю модули в своем собственном проекте. Он содержит код модуля, тестовый код, код поставщика данных (если применимо) и все остальное. Это проверено в управлении исходным кодом, как и любой другой проект. Обратите внимание, что проект модуля не содержит ссылок на определенный веб-сайт DNN, и в проекте создаются ссылки на DNN на общий каталог bin, который ссылается на целевую сборку. Например, в папке моих проектов у меня есть \ bin460, \ bin480, \ bin510, \ bin520 и т. Д. Каждая из этих папок содержит набор двоичных файлов для определенной версии DNN. Таким образом, вы можете построить против определенной версии, но протестировать против любой версии, которая вам нравится.

Проблема с управлением исходным кодом модуля на месте в установке DNN заключается в - иногда не весь код модуля легко изолируется в одном родительском каталоге - не подходит для подхода с модулем PA - нелегко перенести проект на другую версию DNN для разработки или тестирования - легкое непреднамеренное управление источниками компонентов решения DNN, особенно с помощью интегрированных решений управления источниками VS.

Этот подход компилируется быстро, потому что вы не пытаетесь скомпилировать весь проект. Для тестового развертывания у меня есть скрипт сборки, который копирует различные части модуля на целевой веб-сайт. Это можно сделать с помощью компиляции (связать скрипт сборки) или просто запустить после успешной компиляции в окне cmd. Мой скрипт сборки имеет целевой переключатель среды, так что я могу сказать «dnn520», чтобы развернуть сборку для моей тестовой установки dnn520. Обратите внимание, что вам нужно сначала вручную создать конфигурацию модуля, прежде чем это сработает, но это одноразовое усилие, и вы можете использовать функцию экспорта для создания манифеста модуля .dnn.

Чтобы собрать пакет модуля, потратьте время на всесторонний скрипт, который возьмет различные части из вашего исходного каталога и поместит их в установочный пакет. Сохраните все части в папке управления исходным кодом и скопируйте их во временный каталог, затем запустите утилиту командной строки zip (я использую древнюю версию pkzip), чтобы упаковать ее в устанавливаемый файл.

Преимущества такого подхода: - отделение кода модуля от установленного кода - простой способ сохранить только код модуля в системе контроля версий (не нужно исключать весь код сайта) - возможность быстрого тестирования модулей в разных версиях dnn - пакетный скрипт позволяет быстро и легко построить новую версию модуля для установки, тестирования / развертывания

Недостатки - не может использовать волшебную зеленую кнопку 'go' в VS (нужно вручную подключить отладчик) - больше времени на настройку, чем при разработке на месте

6 голосов
/ 01 декабря 2009

Обычно мы сохраняем код модуля в папке под DesktopModules и собираемся в каталог bin веб-сайта.

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

Автоматическое развертывание изменений несколько сложнее в DNN. Настоятельно рекомендуется иметь скрипт сборки, который упаковывает ваш модуль в устанавливаемую форму. Затем вы можете скопировать устанавливаемые пакеты в папку Install/Module на веб-сайте и получить URL /Install/Install.aspx?mode=InstallResources, который установит все пакеты в эту папку.

0 голосов
/ 05 декабря 2016

В ответ на ответ bduke. Вы должны и не хотите создавать проекты в папке DesktopModules.

  1. Вот куда уходит весь исходный код сайта из коробки.
  2. Вот где ваши модули будут «установлены», и, таким образом, если кто-то «обновит» или переустановит один, то он будет перезаписан
  3. Это может значительно усложнить обновление вашего приложения. Многие разработчики не понимают, что идея не касаться исходных файлов исходного кода для изменения их поведения. ПОТОМУ ЧТО это будет просто перезаписано при выполнении обновления.

Если вы хотите построить модули, создайте папку решений под названием Modules и поместите туда отдельные модули проекта.

  1. Если вы хотите их отладить, укажите конечную точку вывода отладки в папке web \ bin.
  2. Если вы хотите установить / развернуть их. Постройте его в режиме выпуска и установите его через фильтр модуля / расширения.
...