我正在尝试使用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,这是我遇到的问题。