Блог Сергея Байдачного

Мой блог о технологиях

SharePoint 2010 и SilverLight: Использование Visual Studio 2010

6 комментариев

Попробуем использовать Visual Studio 2010 для создания решения для SharePoint, включающего в себя web-часть, содержащую Silverlight-приложение.

Поскольку создание веб-части дело тривиальное, будем использовать шаблон решения, предназначенного для развертывания в «песочнице» SharePoint 2010. Для этого необходимо создать проект на основе шаблона Empty SharePoint Project и выбрать адрес сайта, где Вы планируете провести тестирование веб-части и опцию Deploy as a sandbox solution.

image

@3 Создание проекта для SharePoint 2010

В созданное решение добавьте еще один проект на основе шаблона Silverlight Application (у меня проект называется SharePointMediaWebPart). При этом, снимите галочку Host the Silverlight application in a new Web Site (он нам не понадобится):

image

@4 Создание Silverlight-приложения

На последнем шаге, при подготовке каркаса нашего решения, добавим к SharePoint проекту новый элемент. Для создания нового элемента выберем шаблон Web Part (не Visual). В результате структура Вашего проекта будет напоминать ту, которая отображена на рисунке ниже:

image

@5 Структура проекта

Прежде чем приступить к написанию кода и развертыванию решения, необходимо проверить наличие возможности развернуть Ваш код в «песочницу» SharePoint. Как ни странно, при инсталляции бета-версии SharePoint 2010, эта возможность по умолчанию выключена.

Итак, если при развертывании решения Вы получаете ошибку Error occurred in deployment stepRetract Solution‘: Cannot start service SPUserCodeV4 on computer ‘…..’, вероятнее всего у Вас не запущена служба Windows SharePoint Services User Code Host V4. Измените способ запуска этой службы на Automatic и запустите ее.

image

Запустив службу, Вы можете попробовать развернуть проект. Вероятнее всего Вы получите следующую ошибку: Error occurred in deployment step ‘Activate Features’: This feature cannot be activated at this time. The contents of the feature’s solution requires the Solution Sandbox service to be running. Чтобы, наконец, развернуть наше решение, необходимо запустить утилиту администрирования SharePoint 2010 и запустить SharePoint Foundation User Code Service службу и там. Хотя последнее действие скорее активирует возможность, чем запускает службу, Вам необходимо перейти в раздел System Settings->Manage Services on Server и нажать Start.

image

@7 Активация службы с помощью утилиты администрирования

Запустив все необходимые службы, можно приступить к написанию кода.

Первым делом реализуем Silverlight-приложение, заполнив его содержимое простым MediaElement (мы не будем создавать сложный интерфейс).

<UserControl x:Class="SharePointMediaWebPart.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Left">
        <MediaElement Name="myMedia" AutoPlay="True"></MediaElement>
    </Grid>
</UserControl>

Выбирать имя отображаемого видео будем, используя конфигурационный параметр элемента object, добавляющего встраиваемый компонент Silverlight на страницу. Поэтому, реализуем код, выбирающий параметр с ключом media:

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MainPage();
 
    ((MainPage)this.RootVisual).myMedia.Source =
         new Uri(
             this.Host.InitParams["media"], 
             UriKind.RelativeOrAbsolute);
}

Silverlight-приложение полностью готово. Перейдем к разработке созданной веб-части.

Код нашей веб-части достаточно простой: он просто генерирует элемент object, который вписывает в содержимое:

protected override void RenderContents(HtmlTextWriter writer)
{ 
    string html = String.Format(
        "<object data=\"data:application/x-silverlight-2,\" "+
        "type=\"application/x-silverlight-2\" width=\"90%\" height=\"90%\">" +
        "<param name=\"source\" value=\"_catalogs/masterpage/SharePointMediaWebPart.xap\"/>" +
        "<param name=\"minRuntimeVersion\" value=\"4.0.41108.0\" />" +
        "<param name=\"initparams\" value=\"media={0}\" />" +
        "</object>", 
        this.MediaSource);
 
    writer.Write(html);
 
    base.RenderContents(writer);
}

Кроме этого, необходимо определить свойство MediaSource, которое будет задаваться редактором сайта:

private string _mediaSource = "";
 
[WebBrowsable(true),
WebDescription("Select .wmv file from a list"),
WebDisplayName("Media Source"),
Personalizable(PersonalizationScope.User)]
public string MediaSource
{
    get
    {
        return _mediaSource;
    }
    set
    {
        _mediaSource = value;
    }
}

Собственно говоря, это весь код. Остается настроить проект таким образом, чтобы он включал .xap-файл приложения и выполнял его развертывание в один из существующих списков (я выбрал список с эталонными страницами).

Чтобы включить .xap-файл в решение SharePoint 2010, войдите в свойства веб-части (MediaWebPart), и установите ссылку на выходной файл нашего SilverLight-проекта. Для этого используется окно Project Output Reference:

image

@8 Добавление .xap-файла в пакет решения

Имея .xap-файл внутри нашего пакета, остается развернуть его внутри списка с эталонными страницами. Для этого отредактируйте файл elements.xml, добавив внутрь элемента Elements следующий код:

  <Module Name="MediaWebPartXap" Url="_catalogs/masterpage">
    <File Path="MediaWebPart\SharePointMediaWebPart.xap" 
       Url="SharePointMediaWebPart.xap" Type="GhostableInLibrary">
    </File>
  </Module>

Проект готов к развертыванию.

Попробуйте выполнить развертывание и создать произвольный список, куда разместить видео-файл. Добавьте созданную веб-часть на любую из страниц и укажите ссылку на видео-файл в вашем списке, используя свойство Media Source в окне настроек веб-части. Если Вы все сделали верно, то на экране отобразиться видео:

image

Реклама

Written by Sergiy Baydachnyy

09.02.2010 в 17:19

Опубликовано в SharePoint, SilverLight

Tagged with ,

комментариев 6

Subscribe to comments with RSS.

  1. […] Читать полностью Опубліковані Tuesday, February 09, 2010 5:21 PM від Sergiy Baydachnyy […]

  2. […] переписать предыдущий пример так, чтобы Web-часть, отображающая видео, позволяла […]

  3. […] переписать предыдущий пример так, чтобы Web-часть, отображающая видео, позволяла […]

  4. Спасибо! Отличная статья.
    Выполнил все шаманства со службами, однако при деплое солюшна на сервер выскакивает ошибка:
    «Error occurred in deployment step ‘Recycle IIS Application Pool’: The open operation did not complete within the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout.»

    Что это может быть? Сервер удаленный, публикую с локальной машины.

    Сергей

    09.12.2010 at 13:04


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: