我尝试了一些非常简单的F#来尝试和测试与SharePoint 2010 API的交互。我认为我遇到了F#的一个普遍问题。无论如何,F#脚本可以访问SharePoint 2010 API吗?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应用程序。验证您是否正确输入了网址...
如果我尝试从32位c#控制台程序访问SharePoint 2010 API,那么会出现哪条错误消息。如果我将c#console程序更改为不显示消息的任何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,这是我遇到的问题。
我不知道任何地方有足够的了解.NET肯定地说,但我认为这是一个红色的鲱鱼。在脚本运行时添加该引用会产生相同的结果。尽管视觉工作室编辑器中的红色波浪线消失了。 – 249076
我确实设法运行了一些抓取列表信息的东西,但是我没有使用#f-scripting,我正在使用正常的F#Lib项目并在项目中引用ServiceModel程序集。 [编辑:用visual studio 2010] –