本地引用Microsoft.SharePoint.dll能否连接SharePoint服务器文件夹?运行报错需安装SP2013吗?
问题1:仅在本地计算机上引用Microsoft.SharePoint.dll,是否足以连接到SharePoint服务器文件夹?
绝对不够。Microsoft.SharePoint.dll只是SharePoint服务器端对象模型(SSOM)的核心组件之一,但它依赖一整套SharePoint专属的运行环境和其他程序集——比如你后面遇到的Microsoft.SharePoint.Library,还有很多注册在全局程序集缓存(GAC)里的相关组件。这些组件不是单纯复制引用就能工作的,它们需要SharePoint服务器安装过程中完成的系统配置、服务注册、GAC部署等一系列步骤支持。
简单说,SSOM的设计是只能在安装了SharePoint服务器的机器上运行,单纯引用DLL根本满足不了运行依赖。
问题2:使用SPSite类的代码时,是否需要在运行环境安装SharePoint 2013?
没错,必须装。SPSite、SPWeb这类SSOM类是完全绑定到SharePoint服务器本地环境的。它们的运行需要依赖服务器上的IIS配置、SharePoint服务实例、GAC中的所有相关程序集,还有系统级的注册表设置——这些只有在完整安装SharePoint 2013服务器的Windows机器上才会存在。你遇到的FileNotFoundException就是因为缺少这些必须的依赖组件,而这些组件无法通过手动复制DLL来解决。
替代方案:用客户端对象模型(CSOM)远程连接
如果不想在本地装SharePoint服务器,你可以改用SharePoint的客户端对象模型(CSOM)。它是专门为远程访问设计的,只需要引用两个独立的DLL(Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll),不需要安装SharePoint服务器就能远程连接到SharePoint站点。举个简单的示例代码:
using Microsoft.SharePoint.Client; using System; class Program { static void Main() { string siteUrl = "http://your-sharepoint-2013-site-url"; using (ClientContext clientContext = new ClientContext(siteUrl)) { // 使用当前用户凭证,或者指定用户名密码 clientContext.Credentials = System.Net.CredentialCache.DefaultCredentials; Web web = clientContext.Web; clientContext.Load(web); clientContext.ExecuteQuery(); Console.WriteLine($"Connected to site: {web.Title}"); } } }
内容的提问来源于stack exchange,提问作者ni37osllb

