Получение файлов и номеров их версий из sharepoint - PullRequest
1 голос
/ 28 августа 2008

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

Поэтому я полагаю, что, поскольку мы храним файлы в Sharepoint, я должен быть в состоянии написать сценарий для извлечения файлов из Sharepoint, получить номер версии и автоматически ввести / обновить номер версии из Sharepoint в файл. Это означает, что когда кому-то нужны «последние» файлы, они могут запустить сценарий и получить последние файлы с правильными номерами версий (это немного больше, чем это, поэтому причина использования сценария заключается не только в автоматическом управление версиями).

Кто-нибудь знает, как получить файлы + номера версий от Sharepoint?

Ответы [ 2 ]

1 голос
/ 29 августа 2008

Есть способ сделать это через веб-сервисы, но я сделал больше с реализацией пользовательских обработчиков событий. Вот немного кода, который будет делать то, что вы хотите. Имейте в виду, что вы можете выполнить это только с сервера, поэтому вы можете захотеть обернуть это в веб-сервис, чтобы разрешить доступ со встроенных устройств. Кроме того, вам нужно будет сослаться на Microsoft.SharePoint.dll в этом коде.

using (SPSite site = new SPSite("http://yoursitename/subsite"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPListItemCollection list = web.Lists["MyDocumentLibrary"].GetItems(new SPQuery());
        foreach(SPListItem itm in list) {
            Stream inStream = itm.File.OpenBinaryStream();
            XmlTextReader reader = new XmlTextReader(inStream);
            XmlDocument xd = new XmlDocument();
            xd.Load(reader);
            //from here you can read whatever XML node that contains your version info
            reader.Close();
            inStream.Close();
        }
    }
}

Операторы using () гарантируют, что вы не создадите утечку памяти, поскольку SPSite и SPWeb являются неуправляемыми объектами.

Редактировать: Если номер версии был перенесен в поле библиотеки, вы можете получить к нему доступ в следующем цикле for:

itm["FieldName"]
1 голос
/ 29 августа 2008

Я предполагаю, что вы говорите о документах в списке или библиотеке, а не об исходных файлах в 12 улье. Если это так, каждая библиотека имеет встроенную версию. Вы можете получить к нему доступ, нажав на Настройки библиотеки форм, доступные в каждой библиотеке (конечно, с соответствующими правами администратора). Оттуда выберите Настройки контроля версий и выберите настройку, которая подходит для вашего процесса.

Что касается получения номера версии в коде, если вы извлекаете SPListItem из коллекции, к каждому элементу прикрепляется SPListItemVersionCollection с именем Версии.

...