【问题标题】:F# Script SharePoint 2010 API doesn't workF# 脚本 SharePoint 2010 API 不起作用
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我对 .net 的任何了解都不足以肯定地说,但我认为这是一个红鲱鱼。添加该引用会在脚本运行时产生相同的结果。尽管 Visual Studio 编辑器中的红色波浪线确实消失了。
    • 我确实设法运行了一些获取列表信息的东西,但我没有为此使用#f-scripting,我使用的是普通的 F# Lib 项目并在项目中引用 ServiceModel 程序集。 [编辑:使用 Visual Studio 2010]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2021-12-04
    • 2010-12-10
    相关资源
    最近更新 更多