2011-09-29 115 views
4

我尝试了一些非常简单的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,这是我遇到的问题。

回答

1

您需要将引用添加到System.ServiceModel

+0

我不知道任何地方有足够的了解.NET肯定地说,但我认为这是一个红色的鲱鱼。在脚本运行时添加该引用会产生相同的结果。尽管视觉工作室编辑器中的红色波浪线消失了。 – 249076

+0

我确实设法运行了一些抓取列表信息的东西,但是我没有使用#f-scripting,我正在使用正常的F#Lib项目并在项目中引用ServiceModel程序集。 [编辑:用visual studio 2010] –