Разработка и развертывание пользовательских модулей SharePoint - PullRequest
0 голосов
/ 17 февраля 2010

Добрый день,

Мы работаем над пользовательским модулем (Система управления информацией) для SharePoint. Файл проекта этого модуля представляет собой библиотеку классов, которая содержит пользовательские элементы управления. Элементы управления пользователя основаны на SmartPart и AJAX Extension Toolkit. Модуль имеет отдельную базу данных, в которой есть таблицы / представления / хранимая процедура.

В среде разработки мы внедряем модуль в следующие шаги:

  • Восстановление резервной копии базы данных модуля. на предпроизводственной или тестовой окружающая среда
  • Установить AJAX Extension Toolkit
  • Измените web.config веб-приложения для строки подключения, записи safecontrol расширения AJAX, установите для параметраsesssessionstate значение true для страниц, добавьте запись тега расширения AJAX и раскомментируйте следующую строку:

    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>

  • Создайте папку UserControls в корне веб-приложения и скопируйте туда все пользовательские элементы управления. Поскольку SmartPart будет (я могу предположить, только) найти пользовательские элементы управления

Вот как мы это делаем. Я уверен, что это не очень хорошая практика, и должны быть способы сделать это намного лучше.

Один из моих вопросов: можем ли мы создать отдельный файл web.config, который будет иметь все необходимые теги и настройки там, чтобы нам не нужно было менять сеть приложение web.config? Просто угадай!

Поскольку все пользователи WSPBuilder знают об этом, вы не можете изменить файл manifest.xml и не можете обеспечить хорошую интеграцию с папкой веб-приложения. Я не знаю, почему SmartPart выбирает корневую папку веб-приложения, чтобы найти элементы управления пользователя. Возможно ли, что SmartPart может начать выбирать пользовательские элементы управления из папки 12-Hive TEMPLATE \ CONTROLTEMPLATES?

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

Кроме того, я хотел бы получить предложения по разработке пользовательских модулей на Хорошие (или лучшие) практики SharePoint.

Мы используем набор инструментов, таких как WSPBuilder, расширение Visual Studio для WSS, STSDEV, SPVisualDev, мастер развертывания контента SharePoint, инструменты администрирования SharePoint, установщик SharePoint.

Спасибо.

Хорошего дня!

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Существует способ указать SmartPart, чтобы он указывал на папку ControlTempltes, но для этого требуется перекомпиляция решения SmartPart. Чтобы SmartPart заглянул внутрь 12 \ CustomTemplates \ YourFolder \, вам нужно получить код для SmartPart из codeplex, изменить код внутри той точки, куда вам нужно, перекомпилировать его и упаковать как WSP. Вот как я обошел проблему. Если вы сделаете это и сохраните свою собственную версию, вы сэкономите время на разработку в будущем. Мы сделали это и будем использовать нашу собственную версию с другими клиентами в будущем. Надеемся, что оригинальный код SmartPart будет обновлен, чтобы учесть это.

Совет для элементов управления SmartPart: Убедитесь, что вы выключили все валидаторы в ваших элементах управления, когда вы находитесь в режиме редактирования, иначе вы в конечном итоге заполните все поля, чтобы опубликовать страницу. SharePoint делает забавные вещи в режиме редактирования, поэтому обязательно проверьте все свои пользовательские элементы управления с помощью SmartPart в режиме редактирования.

Развертывание на ресурсах Я думаю, что это может быть проблема с разрешениями, обычно люди разворачивают сборки в 80 \ bin, и я не помню, чтобы я делал что-то особенное, чтобы это работало. Поскольку wsp развертываются через SharePoint, если у SharePoint нет разрешений на папку «ресурсы», это может привести к ошибке. Возможные проблемы: a) Папка ресурсов не существует в inetpub или где бы вы ни находились. (Попробуйте создать структуру) б) Папка ресурса не имеет те же права доступа, что и папка bin. (Проверьте, можете ли вы развернуть сборку в корзине) c) Папка ресурса доступна только для чтения, и это вызывает проблему. (Снять только для чтения) d) SharePoint никогда не позволяет отображать файлы, отличные от сборок, в корневую папку через WSP (маловероятно и не уверен в этом)

Моя рекомендация по устранению такой проблемы будет заключаться в том, чтобы извлечь содержимое wsp в папку (переименуйте расширение .wsp в .cab и извлеките .cab). Поиграйтесь с файлами и структурой> создайте из нее файл cab (google this)> Переименуйте расширение обратно в .wsp> Разверните> Тест> Если это не работает, снова поиграйте со структурой и попробуйте снова.

0 голосов
/ 17 февраля 2010
  • Изменить web.config веб-приложения
    для строки подключения, safecontrol
    запись расширения AJAX,
    enablesessionstate имеет значение true
    страницы, добавьте запись тега AJAX Extension,
    и раскомментируйте следующую строку:

    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
    

Используйте класс SPWebConfigModification для добавления записей в web.config ( примеры добавления записей ajax в web.config с кодом ).

  • Создание папки UserControls в сети корень приложения и скопировать всех пользователей Управляет там. Как SmartPart будет (может только, я полагаю) найдите пользовательские элементы управления

Если я прав, вы можете просто создать папку с именем «80» (точно так же, как папка «12») и развернуть собственную папку в предопределенных папках.

Из документации WSPBuilder :

Папка 80 представляет собой Папка веб-приложения и содержит следующие подпапки 80 \ bin, 80 \ wpcatalog, 80 \ ресурсов. 80 \ бин содержит DLL. Если у вас есть некоторые определения веб-частей (webpart, dwp) файлы, они идут в wpcatalog папка. Любой файл может быть добавлен в папка ресурса.

Так, может быть, было бы неплохо поместить их в папку ресурсов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...