F#脚本SharePoint 2010 API无法使用。

4

我正在尝试使用F#进行简单的操作,以测试与SharePoint 2010 API的交互。 我认为我遇到了F#的一般性问题。 有没有办法让F#脚本访问SharePoint 2010 API?

我认为我的问题是因为F#脚本运行在32位上,而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编辑器中,它显示以下错误:此处需要System.ServiceModel.ChannelFactory`1类型但不可用。您必须添加对程序集的引用...
当运行脚本时,会出现以下消息:System.IO.FileNotFoundException:找不到Web应用程序...。请验证您是否正确输入了URL...
这是我在尝试从32位C#控制台程序访问SharePoint 2010 API时收到的错误消息。如果将C#控制台程序更改为Any CPU,则不会出现该消息。
然而,我正在尝试在F#脚本中执行此操作,我猜测它是32位的,那么我该如何解决?
另外,由于这可能是F#脚本和64位dll的常见问题,那么如何解决需要在F#脚本中引用64位dll的问题?
编辑 我在Visual Studio命令提示符中使用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的引用,因此我已更新代码以添加该引用。
这解决了Visual Studio编辑器持续出现红色波浪线的投诉。当运行脚本时,结果相同,脚本无法访问SharePoint 2010 API,这是我遇到的问题。
1个回答

1

你需要添加对System.ServiceModel的引用


我对 .net 并不是很了解,无法确定,但我认为这是一个误导。添加该引用后,脚本运行时产生了相同的结果。虽然在 Visual Studio 编辑器中的红色波浪线消失了。 - 249076
我成功地运行了一个抓取列表信息的程序,但我并没有使用 #f-scripting,而是使用普通的 F# Lib 项目,并在项目中引用了 ServiceModel 组件。[编辑:使用 Visual Studio 2010] - Francisco Aquino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接