F # Script SharePoint 2010 API не работает - PullRequest
4 голосов
/ 29 сентября 2011

Я пытаюсь что-то действительно простое в F #, чтобы попытаться проверить взаимодействие с API-интерфейсом SharePoint 2010. Я думаю, что сталкиваюсь с общей проблемой с F #. В любом случае сценарий F # может получить доступ к API-интерфейсу SharePoint 2010?

Я думаю, что моя проблема связана с 32-битными скриптами F #, а API SharePoint - с 64-битной.

Пример кода, который я пытаюсь запустить, выглядит следующим образом:

#r "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.sharepoint.dll"
#r "System.ServiceModel.dll"

open System
open Microsoft.SharePoint

let GetListByUrl (listUrl:string) =
    use site = new SPSite(listUrl)
    use web = site.OpenWeb()
    let list = 
        if not (web = null) then web.GetList(listUrl)
    list

В редакторе Visual Studio он говорит следующую ошибку: Тип System.ServiceModel.ChannelFactory`1 требуется здесь и недоступен. Вы должны добавить ссылку на сборку ...

При запуске сценария выдается сообщение: System.IO.FileNotFoundException: веб-приложение в ... не может быть найдено. Убедитесь, что вы правильно ввели URL-адрес ...

Какое сообщение об ошибке я получаю, если пытаюсь получить доступ к API-интерфейсу SharePoint 2010 из 32-битной консольной программы c #. Если я изменю консольную программу c # на Any CPU, это сообщение не появится.

Однако я пытаюсь сделать это в F # сценарии, который, я думаю, 32-битный, так как бы мне обойти это?

Кроме того, поскольку это, вероятно, общая проблема со сценариями F # и 64-битными библиотеками, как бы вы обошли проблему необходимости ссылаться на 64-битные библиотеки DLL в сценариях F #?

Редактировать Я использовал corflags.exe в приглашении Visual Studio cmd, чтобы изменить fsi.exe до 64 бит. Я следовал этому руководству: http://ig2600.blogspot.com/2010/05/making-fsharp-interpreter-fsi-run-in.html. Это сработало, хотя интерактивное окно F # казалось медленнее. Однако когда я запустил приведенный выше код в 64-битном fsi, он сказал, что sharepoint не работает с .net 4.0. Как бы вы запустили интерактивное окно F # в .net 3.5?

Редактировать Из-за ответа, опубликованного Ф.Акино, в котором он сказал, что мне нужно добавить ссылку на System.ServiceModel, я обновил код, добавив его.

Это исправляет жалобы редактора визуальной студии, которые везде появляются с красными волнистыми линиями. При запуске сценария результаты совпадают, сценарий не может получить доступ к API sharepoint 2010, что является проблемой, с которой я столкнулся.

1 Ответ

1 голос
/ 30 сентября 2011

Вам необходимо добавить ссылку на System.ServiceModel

...