我正在尝试使用F#中的一些非常简单的东西来尝试测试与SharePoint 2010 API的交互。我想我遇到了F#的普遍问题。无论如何,F#脚本是否可以访问SharePoint 2010 API?
我认为我的问题是由于运行32位的F#脚本,而且SharePoint API是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编辑器中,它显示以下错误:此处需要Type System.ServiceModel.ChannelFactory`1且不可用。您必须添加对程序集的引用...
当脚本运行时,它会显示以下消息:System.IO.FileNotFoundException:找不到位于...的Web应用程序。确认您已正确输入网址...
如果我尝试从32位c#控制台程序访问SharePoint 2010 API,则会收到错误消息。如果我将c#控制台程序更改为任何CPU,则该消息不会出现。
但是我试图用F#脚本来做这个,我猜是32位,所以我该如何处理?
此外,由于这可能是F#脚本和64位dll的一般问题,您如何解决需要在F#脚本中引用64位dll的问题?
修改的 我在visual studio cmd提示符下使用corflags.exe将fsi.exe修改为64位。我遵循了这个指南:http://ig2600.blogspot.com/2010/05/making-fsharp-interpreter-fsi-run-in.html。这似乎有效,尽管F#交互式窗口似乎更慢。但是,当我在现在的64位fsi中运行上面的代码时,它表示sharepoint不能与.net 4.0一起使用。你将如何在.net 3.5中运行F#交互式窗口?
修改的 由于F.Aquino发布的答案,他说我需要添加对System.ServiceModel的引用,我已经更新了代码以添加它。
这修复了视觉工作室编辑的投诉,这些投诉一直出现在红色波浪线上。运行脚本时结果是相同的,脚本无法访问sharepoint 2010 API,这就是我遇到的问题。
答案 0 :(得分:1)
您需要添加对System.ServiceModel的引用