【发布时间】:2011-09-29 12:37:27
【问题描述】:
我正在 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 编辑器中显示以下错误:此处需要 Type System.ServiceModel.ChannelFactory`1 且不可用。您必须添加对程序集的引用...
当脚本运行时,它会给出消息:System.IO.FileNotFoundException: The Web application at... could not be found。验证您输入的 URL 是否正确...
如果我尝试从 32 位 c# 控制台程序访问 SharePoint 2010 API,则会收到以下错误消息。如果我将 c# 控制台程序更改为 Any CPU,则不会出现该消息。
但是我试图在我猜是 32 位的 F# 脚本中执行此操作,那么我将如何解决这个问题?
此外,由于这可能是 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 的引用,我已经更新了代码以添加它。
这解决了 Visual Studio 编辑器的投诉,这些投诉一直在到处出现红色波浪线。运行脚本时结果相同,脚本无法访问 sharepoint 2010 API,这是我遇到的问题。
【问题讨论】:
标签: sharepoint f# 64-bit f#-interactive f#-scripting