在.Net Core应用程序中使用SharePoint CSOM

时间:2017-02-12 11:13:52

标签: .net sharepoint asp.net-core

我想通过.Net Core MVC应用程序上的CSOM库从SharePoint列表中获取数据。在.Net Framework应用程序上实现这一点绝对没有问题,因为Microsoft.SharePoint.Client库包含ExecuteQuery方法。不幸的是.Net Core相当于没有。

我已经制作了异步功能

public async Task<ActionResult> GetRequests()
    {
        ClientContext context = new ClientContext("https://xxx/sites/xxx/");
        List certificatesList = context.Web.Lists.GetByTitle("Items");
        CamlQuery query = CamlQuery.CreateAllItemsQuery(100);
        ListItemCollection items = certificatesList.GetItems(query);
        context.Load(items);
        Task spTask = context.ExecuteQueryAsync();
        await Task.WhenAll(spTask);
        var result = items;
        ...

    }

但它似乎也不会在.Net Core上工作,因为它会抛出

  

抛出异常:&#39; System.InvalidOperationException&#39;在&gt; System.Private.CoreLib.ni.dll

中      

其他信息:找不到平台服务库。对于   Windows Store应用程序,请包含   Microsoft.SharePoint.Client.Runtime.WindowsStore.dll中   应用程序包。对于Windows Phone应用程序,请包含   Microsoft.SharePoint.Client.Runtime.WindowsPhone.dll中   应用程序包。对于Windows应用程序,请安装   GAC中的Microsoft.SharePoint.Client.Runtime.Windows.dll(全局   程序集缓存)或使其可用于Windows应用程序。

有人在.Net Core中使用CSOM,还是应该使用REST Api?

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  }

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题。由于某些原因,当您引用Microsoft.SharePointOnline.CSOM nuget程序包时,它使用.net框架dll而不是netcore45 dll。 这是我为解决此问题所做的事情:

  1. 下载nuget软件包https://www.nuget.org/packages/Microsoft.SharePointOnline.CSOM/
  2. 将其提取到项目中的子文件夹中;例如;依赖关系
  3. 引用正确的程序集

    netcore45 \ Microsoft.SharePoint.Client.Portable.dll netcore45 \ Microsoft.SharePoint.Client.Runtime.Portable.dll net45 \ Microsoft.SharePoint.Client.Runtime.Windows.dll netcore45 \ Microsoft.SharePoint.Client.Runtime.WindowsStore.dll

哦,如果您已经有了该nuget软件包,请对其进行卸载。