Ложная (?) Ошибка «Файл не найден» при попытке выполнить клиентское кодирование SharePoint - PullRequest
3 голосов
/ 17 января 2012

Я получаю ложную ошибку "Файл не найден", когда я выполняю простое кодирование клиента SharePoint 2010.Это не , который я собираю для неправильного типа процессора или неправильной версии .NET.(Я собираюсь на «любой процессор» или «x64» и .NET 3.5.) Я скопировал файлы Microsoft.SharePoint * .dll с сервера и поместил их в C: \ Program Files \ Common Files \ Microsoft Shared \ Web ServerРасширения \ 14 \ ISAPI.(Я тоже пробовал другие папки.) Затем я открыл свой проект Visual Studio 2010, щелкнул правой кнопкой мыши на References, нажал на вкладку Browse и добавил один или все dll (мне нужен только Microsoft.SharePoint.dll.)простая программа, которую я пытаюсь запустить:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace SPListsToConsole {
    class Program {
        static void Main( string[] args ) {
            using ( SPSite sc = new SPSite( "http://orsandbox01/SitePages/Home.aspx" ) ) {
                SPWeb site = sc.RootWeb;
                foreach ( SPList list in site.Lists ) {
                    if ( !list.Hidden ) {
                        Console.WriteLine( list.Title );
                    }
                }
            }
        }
    }
}

И вот ошибка, которую я получаю:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.SharePoint.Library, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.SharePoint.Library, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   at SPListsToConsole.Program.Main(String[] args)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Я не делал никакого кода SharePoint раньше, но я следую за всемиинструкции я могу гуглить.TIA за любую помощь, которой вы можете поделиться.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Использование веб-служб SharePoint вместо объектной модели

Если вам нужно работать с удаленным сервером sharepoint, вы можете использовать веб-службы вместо объектной модели.

Предполагая, что вы добавили ссылку на списки webservice (/_vti_bin/lists.asmx) и назвали ее «Списки», вы можете получить список видимых списков, например:

Lists.Lists proxy = new Lists.Lists();

// Use logged on users credentials to authenticate with SharePoint
proxy.Credentials = CredentialCache.DefaultNetworkCredentials;

XmlNode listCollection = proxy.GetListCollection();

foreach (XmlNode node in listCollection.ChildNodes)
{
    bool hidden = bool.Parse(node.Attributes["Hidden"].Value);

    if (!hidden)
    {
       Console.WriteLine(node.Attributes["Title"].Value);
    }
}

Более подробную информацию о веб-сервисе списков вы можете найти здесь: http://msdn.microsoft.com/en-us/library/lists.lists_methods.aspx

Большинство вещей, которые вы можете сделать с помощью кода объектной модели, также можно реализовать с помощью веб-служб.

Добавление ссылки на веб-сервис

Чтобы добавить веб-ссылку в VS2010:

  1. Щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Добавить ссылку на службу

  2. В диалоговом окне Добавить ссылку на службу нажмите Дополнительно ...

  3. В диалоговом окне Настройки справочника услуг нажмите Добавить веб-справку ...

  4. В диалоговом окне Добавить веб-ссылку :

    а. Для Url введите URL-адрес семейства сайтов, а затем _vti_bin / lists.asmx . Например: http://sharepoint/sites/mySiteCollection/_vti_bin/lists.asmx

    б. Для Имя веб-ссылки введите Списки

    с. Нажмите Добавить ссылку

Ссылка теперь будет добавлена ​​в проект, и вы можете использовать приведенный выше код для доступа к ней.

Чтобы получать списки с суб-сайта, измените свойство URL-адреса сервисов, чтобы оно указывало на веб-сервис для этого суб-сайта, добавив _vti_bin / lists.asmx к URL-адресу суб-сайта, как указано выше.

2 голосов
/ 19 января 2012

Оказывается, ты не можешь делать то, что я пытался сделать.На компьютере, на котором вы разрабатываете, должен быть установлен SharePoint.

Статья MSDN

...