Развертывание библиотеки документов с файлами
Иногда на проектах, создавая различные фичи, включающие в себя списки/библиотеки, требуется наличие в них (этих списках/библиотеках) первоначальных данных. В этом посте я опишу механизм моего решения данной задачи.
Данные в списке
Что касается списков, то здесь все просто: необходимо только расширить ListInstance, сгенерированный Visual Studio, примерно следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ListInstance Title="ZhukBlogListWithDemoContent"
OnQuickLaunch="FALSE"
TemplateType="180386"
Url="Lists/ZhukBlogListWithDemoContent"
Description="">
<Data>
<Rows>
<Row>
<Field Name="Title">ListItem 1</Field>
</Row>
<Row>
<Field Name="Title">ListItem 2</Field>
</Row>
</Rows>
</Data>
</ListInstance>
</Elements>
Данные в библиотеке
В случае с библиотекой вариант, представленный выше, не работает. В этом случае я поступаю следующим образом:
Создаем ListInstance на основе DocumentLibrary: Теперь добавляем в проект модуль:
Кладем в модуль файлы, нас интересующие. Я не стал удалять файл Sample.txt, т.к. он мне не мешает, но при разработке реальных решений вырезать весь этот мусор придется. Получилось у меня вот так:
Связываем Module и ListInstance
Здесь ведущим объектом является ListInstance, а ведомым, соответственно, Module. В файле elements.xml модуля указываем значение атрибута Url равным адресу нашего ListInstance. Также необходимо указать у каждого элемента File нашего модуля атрибут Type со значением GhostableInLibrary. Должно получиться примерно вот так:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="ZhukBlogDocumentWithDemoContentModule"
Url="Lists/ZhukBlogDocumentWithDemoContent">
<File Path="ZhukBlogDocumentWithDemoContentModule\Sample.txt"
Url="ZhukBlogDocumentWithDemoContentModule/Sample.txt"
Type="GhostableInLibrary" />
<File Path="ZhukBlogDocumentWithDemoContentModule\ticketback.xps"
Url="ZhukBlogDocumentWithDemoContentModule/ticketback.xps"
Type="GhostableInLibrary" />
<File Path="ZhukBlogDocumentWithDemoContentModule\ticket.pdf"
Url="ZhukBlogDocumentWithDemoContentModule/ticket.pdf"
Type="GhostableInLibrary" />
</Module>
</Elements>
Не забываем положить элементы в фичу и можно пользоваться.