Развертывание библиотеки документов с файлами

Иногда на проектах, создавая различные фичи, включающие в себя списки/библиотеки, требуется наличие в них (этих списках/библиотеках) первоначальных данных. В этом посте я опишу механизм моего решения данной задачи.

Данные в списке

Что касается списков, то здесь все просто: необходимо только расширить ListInstance, сгенерированный Visual Studio, примерно следующим образом:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  3.  <ListInstance Title="ZhukBlogListWithDemoContent"
  4.         OnQuickLaunch="FALSE"
  5.         TemplateType="180386"
  6.         Url="Lists/ZhukBlogListWithDemoContent"
  7.         Description="">
  8.   <Data>
  9.    <Rows>
  10.     <Row>
  11.      <Field Name="Title">ListItem 1</Field>
  12.     </Row>
  13.     <Row>
  14.      <Field Name="Title">ListItem 2</Field>
  15.     </Row>
  16.    </Rows>
  17.   </Data>
  18.  </ListInstance>
  19. </Elements>

Данные в библиотеке

В случае с библиотекой вариант, представленный выше, не работает. В этом случае я поступаю следующим образом:

Создаем ListInstance на основе DocumentLibrary: Создание ListInstance'а Теперь добавляем в проект модуль: Создание Module'я Кладем в модуль файлы, нас интересующие. Я не стал удалять файл Sample.txt, т.к. он мне не мешает, но при разработке реальных решений вырезать весь этот мусор придется. Получилось у меня вот так:

Связываем Module и ListInstance

Здесь ведущим объектом является ListInstance, а ведомым, соответственно, Module. В файле elements.xml модуля указываем значение атрибута Url равным адресу нашего ListInstance. Также необходимо указать у каждого элемента File нашего модуля атрибут Type со значением GhostableInLibrary. Должно получиться примерно вот так:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  3.  <Module Name="ZhukBlogDocumentWithDemoContentModule"
  4.      Url="Lists/ZhukBlogDocumentWithDemoContent">
  5.   <File Path="ZhukBlogDocumentWithDemoContentModule\Sample.txt"
  6.      Url="ZhukBlogDocumentWithDemoContentModule/Sample.txt"
  7.      Type="GhostableInLibrary" />
  8.   <File Path="ZhukBlogDocumentWithDemoContentModule\ticketback.xps"
  9.      Url="ZhukBlogDocumentWithDemoContentModule/ticketback.xps"
  10.      Type="GhostableInLibrary" />
  11.   <File Path="ZhukBlogDocumentWithDemoContentModule\ticket.pdf"
  12.      Url="ZhukBlogDocumentWithDemoContentModule/ticket.pdf"
  13.      Type="GhostableInLibrary" />
  14.  </Module>
  15. </Elements>

Не забываем положить элементы в фичу и можно пользоваться.

Виталий Жуков

Виталий Жуков

Техлид, Архитектор, Разработчик, Microsoft MVP. Более 20 лет опыта в области системной интеграции и разработки программного обеспечения. Специализируюсь на проектировании и внедрении масштабируемых высокопроизводительных программных решений в различных отраслях.

Смотрите также