Pergunta

Como uma solução temporária até que todos os designers estejam prontos, estamos atualmente trabalhando com vários arquivos de configuração XML.Um dos problemas com isso é o versionamento de arquivos, porque as pessoas se esquecem de atualizar os números de versão ao atualizar os arquivos (o que é de se esperar, já que os humanos geralmente são péssimos na perfeição).

Portanto, imagino que, à medida que armazenamos os arquivos no Sharepoint, devo ser capaz de escrever um script para extrair os arquivos do Sharepoint, obter o número da versão e inserir/atualizar automaticamente o número da versão do Sharepoint no arquivo.Isso significa que quando alguém deseja os arquivos "mais recentes", pode executar o script e obter os arquivos mais recentes com os números de versão corretos (há um pouco mais do que isso, então o motivo para usar o script não é apenas o benefício do auto- versionamento).

Alguém sabe como obter os arquivos + números de versão do Sharepoint?

Foi útil?

Solução

Existe uma maneira de fazer isso por meio de serviços da Web, mas fiz mais implementando manipuladores de eventos personalizados.Aqui está um pouco de código que fará o que você deseja.Lembre-se de que você só pode executar isso a partir do servidor, portanto, convém agrupar isso em um serviço da Web para permitir o acesso a partir de seus dispositivos incorporados.Além disso, você precisará fazer referência ao Microsoft.SharePoint.dll neste código.

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();
        }
    }
}

As instruções using() servem para garantir que você não crie um vazamento de memória, pois o SPSite e o SPWeb são objetos não gerenciados.

Editar:Se o número da versão tiver sido promovido para um campo de biblioteca, você poderá acessá-lo da seguinte maneira no loop for acima:

itm["FieldName"]

Outras dicas

Presumo que você esteja falando sobre documentos em uma lista ou biblioteca, e não sobre arquivos de origem na seção 12.Nesse caso, cada biblioteca possui controle de versão integrado.Você pode acessá-lo clicando nas configurações da biblioteca de formulários disponíveis em cada biblioteca (com privilégios de administrador apropriados, é claro).A partir daí, selecione Configurações de controle de versão e escolha uma configuração que funcione para o seu processo.

Quanto a obter o número da versão no código, se você extrair um SPListItem da coleção, há um SPListItemVersionCollection Versões nomeadas anexadas a cada item.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top