Новые возможности разработки решений SharePoint в Visual Studio 2012
- Создание списков и типов содержимого с помощью новых конструкторов
- Создайте столбцы веб-узла
- Создание веб-части Silverlight
- Публикация решений SharePoint на удаленных серверах SharePoint
- Проверка производительности SharePoint с помощью средств профилирования
- Создание изолированного Visual веб-части
- Улучшенная поддержка песочницы.
- Поддержка JavaScript для отладки JavaScript и IntelliSense
- Рациональный шаблоны проектов SharePoint
- Протестируйте код, с помощью платформы Microsoft имитаций
Это официальный список нововведений Visual Studio 2012 из сайта Microsoft.com. Мы рассмотрим некоторые нововведения на примере решения «MultiUserParser» которое дается как тестовое всем потенциальным кандидатам на должность программиста-разработчика портала SharePoint. Суть задачи: при создании задачи, если в котором поле «Кому назначено» указаны несколько человек, разделить задачу на каждого отдельно.
Шаблоны проектов
Шаблон проекта выбирается непосредственно при создании проекта.
В VS2012 в отличии от 2007 версии уже предусмотрены шаблоны под SharePoint 2010.
a) ПРОЕКТ SHAREPOINT 2010 - это стандартный пустой проект.
b) ВЕБ-ЧАСТЬ SILVERLIGHT SHAREPOINT 2010 - шаблон для создания веб-части Silverlight позволяет создать Silverlight приложение или использовать ранее созданное приложение. Кроме этого, настраивается связь между приложением и веб-частью.
c) ВИЗУАЛЬНАЯ ВЕБ-ЧАСТЬ SHAREPOINT 2010. Данный шаблон проекта позволяет создать веб-часть с использованием визуального дизайнера.
d) ИМПОРТ ПАКЕТА РЕШЕНИЯ SHAREPOINT 2010. С помощью данного типа проекта можно импортировать весь или часть сайта SharePoint 2010, экспортированного в .wsp файл. После импорта можно продолжить работу над добавлением решений, и также развернуть его на сервере SharePoint.
e) ИМПОРТ РАБОЧЕГО ПРОЦЕССА SHAREPOINT 2010. Возможность импортировать повторно используемые рабочие процессы, созданные в SharePoint Designer 2010. После импорта в Visual Studio можно продолжить работу над рабочим процессом и развернуть его на сервере SharePoint.
Мы выбираем SharePoint 2010 Project.
Структура проекта.
Структура данного типа проекта включена во все остальные шаблоны проектов для SharePoint 2010. Структура проекта тоже видоизменена.
В проект входит:
a) СТРАНИЦА СВОЙСТВ проекта
b) ССЫЛКИ НА СБОРКИ, используемые в проекте
c) В папке FEATURES содержится конфигурационный файл .feature, используемый для развертывания feature на сервере
d) В папке PACKAGE содержится файл Package.package, используемый для развертывания решения на сервере
e) Файл key.snk используется для подписи сборки
В наш проект добавляем нужные нам элементы.
Следует отметить богатый выбор элементов Visual Studio 2012, он действительно впечатляет. В 2007 версии такое можно было сделать, только установив дополнительное ПО.
Список шаблонов элементов проектов
SILVERLIGHT WEB PART Шаблон позволяет создать веб-часть, в которой будет работать Silverlight приложение.
VISUAL WEB PART Данный шаблон проекта позволяет создать веб-часть с использованием визуального дизайнера.
WEB PART Веб-часть представляет собой серверный элемент управления, располагающийся на странице веб-частей. Каждая страница представляет из себя набор веб-частей.
LIST, CONTENT TYPE И SITE COLUMN Можно создавать целые списки, типы содержимого и колонки.
EVENT RECEIVER Обработчик для событий с элементами сайтов, например, добавление элементов в список, удаление сайта или запуск рабочего процесса. Данный тип проекта позволяет обработать События списка События элементов списка События по получению почты События сайтов События рабочих процессов списка После добавления элемента в SharePoint Customization Wizard указываются события, которые нужно обработать. Могут быть обработаны события добавления, обновления и удаления у таких элементов, как файлы, поля, элементы списков, списки, вложения, веб-части и рабочие процессы.
SEQUENTIAL WORKFLOW Рабочий процесс представляет собой последовательность шагов, выполняемых по порядку. Последовательный рабочий процесс используется для управления списками и документами. Можно создавать рабочие процессы на уровне сайта или списка. Данный элемент не может быть добавлен в проект с изолированным решением (sandboxed solution).
STATE MACHINE WORKFLOW Шаги данного рабочего процесса (в отличие от последовательного рабочего процесса), могут выполняться непоследовательно – все зависит от действий и состояний. Как и последовательный рабочий процесс, рабочий процесс конечного автомата работает со списками и документами. Рабочий процесс может быть как на уровне сайта, так и на уровне списка. Данный элемент не может быть добавлен в проект с изолированным решением (sandboxed solution).
BUSINESS DATA CONNECTIVITY MODEL Данный элемент позволяет использовать данные из внешних систем в SharePoint, например, из SQL Server.
EMPTY ELEMENT Один из самых часто используемых элементов для определения элементов, отсутствующих в списке готовых шаблонов.
APPLICATION PAGE Данный элемент позволяет создать ASP.NET страницу для SharePoint сайта. Страницы не могут быть использованы в изолированных решениях.
MODULE Модули используются для развертывания файлов на сервере SharePoint. В проекте в файле Elements.xml описываются файлы, и адреса, по которым они будут доступны.
SITE DEFINITION Элемент содержит: Страницу default.aspx Файл onet.xml с определением компонент сайта Webtemp.xml – описание шаблона сайта, которое будет отображаться при создании нового сайта
USER CONTROL Элемент управления, который можно создать в Visual Studio для дальнейшего добавления на страницы приложения �� страницы веб-частей в рамках SharePoint 2010. Данный элемент не может использоваться в изолированных решениях.
Решение.
Нам для нашего решения нужен обработчик событий. Выбираем его. В мастере указываем, на какое событие нужно цеплять его. В 2007 версии это все делалось вручную. Дизайнер автоматически создаст и откроет на редактирование код.
public override void ItemAdding(SPItemEventProperties properties) { base.ItemAdding(properties); }
Допишем туда код, который нужен для выполнения нашей задачи.
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
try
{
this.EventFiringEnabled = false;
properties.Web.AllowUnsafeUpdates = true;
SPFieldUserValueCollection usrs = new SPFieldUserValueCollection(properties.Web, properties.AfterProperties["AssignedTo"].ToString());
SPFieldUserValueCollection lastusr = new SPFieldUserValueCollection();
if (usrs.Count > 1)
{
for (int i = 0; i < usrs.Count - 1; i++)
{
SPListItem newitem = properties.Web.Lists[properties.ListId].Items.Add();
newitem[SPBuiltInFieldId.Title] = properties.AfterProperties["Title"].ToString();
newitem[SPBuiltInFieldId.AssignedTo] = usrs[i];
newitem.Update();
}
lastusr.Add(new SPFieldUserValue(properties.Web, usrs[usrs.Count - 1].ToString()));
properties.AfterProperties["AssignedTo"] = lastusr.ToString();
}
}
catch (Exception ex)
{
properties.Cancel = true;
properties.ErrorMessage = "Can't do;";
properties.Status = SPEventReceiverStatus.CancelWithError;
}
finally {
this.EventFiringEnabled = true;
properties.Web.AllowUnsafeUpdates = false;
}
}
Далее нам нужно настроить Feature который будет устанавливать наш код на портал SharePoint. В 2007 версии для управления настройками Features нужно было устанавливать дополнительное ПО для Visual Studio или править напрямую в коде. В 2012 версии есть встроенный дизайнер, который отлично справляется со своей работой. В дизайнере указывается, какие элементы нужно записать в пакет, область действия данной Feature. Так же можно указать внешние сборки, которые должны быть в пакете. Так как наш проект Sandbox Solution, то мы в проекте должны явно указать на какой список будет устанавливаться наш обработчик. Для этого нужно подправить файл Elements.xml. Изменим «ListUrl» на наш список, и так же добавим строчку «Synchronous». Дело в том что в отличии от 2007 версии 2010 Sharepoint может выполнять код как синхронно так и асинхронно. По умолчанию все выполняется асинхронно. Если в коде мы используем событие вставки «ItemAdding», то нужно выполнять код синхронно.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListUrl="Lists/testTask">
<Receiver>
<Name>TestEventReceiverItemAdding</Name>
<Type>ItemAdding</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>testproject.TestEventReceiver.TestEventReceiver</Class>
<SequenceNumber>10000</SequenceNumber>
<Synchronization >Synchronous</Synchronization>
</Receiver>
</Receivers>
</Elements>
Наш проект готов, можно тестировать. Запускам проект, студия его автоматически устанавливает на узел. Результат тестирования на рисунках. Создаем задачу и назначаем на троим людям. После нажатия «ОК», получаем 3 отдельные задачи.
На этом примере мы разобрали базовые возможности новой Visual Studio 2012 для SharePoint 2010.