尝试进行客户端SharePoint编码时出现虚假(?)文件未找到错误

时间:2012-01-17 17:47:56

标签: c# visual-studio-2010 sharepoint-2010

当我执行简单的SharePoint 2010客户端编码时,我得到的是我认为虚假的“找不到文件”错误。 我正在构建错误的CPU类型或错误的.NET版本。 (我正在构建“任何CPU”或“x64”和.NET 3.5。)我从服务器复制了Microsoft.SharePoint * .dll并将它们放在C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server中扩展\ 14 \ ISAPI。 (我也尝试了其他文件夹。)然后我打开了我的Visual Studio 2010项目,右键单击了References,单击了Browse选项卡并添加了一个或所有dll(我应该只需要Microsoft.SharePoint.dll。)是我尝试运行的简单程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace SPListsToConsole {
    class Program {
        static void Main( string[] args ) {
            using ( SPSite sc = new SPSite( "http://orsandbox01/SitePages/Home.aspx" ) ) {
                SPWeb site = sc.RootWeb;
                foreach ( SPList list in site.Lists ) {
                    if ( !list.Hidden ) {
                        Console.WriteLine( list.Title );
                    }
                }
            }
        }
    }
}

这是我得到的错误:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.SharePoint.Library, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.SharePoint.Library, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   at SPListsToConsole.Program.Main(String[] args)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

之前我没有进行过任何SharePoint编码,但我遵循了Google可以执行的所有说明。 TIA提供您可以分享的任何帮助。

2 个答案:

答案 0 :(得分:2)

事实证明你不能做我想做的事。您必须在开发的计算机上安装SharePoint。

MSDN Article

答案 1 :(得分:2)

使用SharePoint Web服务而不是对象模型

如果需要使用远程sharepoint服务器,则可以使用Web服务而不是对象模型。

假设您已添加对列表webservice(/_ vti_bin/lists.asmx)的引用,并将其命名为“Lists”,您可以获得这样的可见列表列表:

Lists.Lists proxy = new Lists.Lists();

// Use logged on users credentials to authenticate with SharePoint
proxy.Credentials = CredentialCache.DefaultNetworkCredentials;

XmlNode listCollection = proxy.GetListCollection();

foreach (XmlNode node in listCollection.ChildNodes)
{
    bool hidden = bool.Parse(node.Attributes["Hidden"].Value);

    if (!hidden)
    {
       Console.WriteLine(node.Attributes["Title"].Value);
    }
}

您可以在此处找到有关列表Web服务的更多详细信息: http://msdn.microsoft.com/en-us/library/lists.lists_methods.aspx

使用Web服务也可以实现对象模型代码所能完成的大部分工作。

添加对Web服务的引用

在VS2010中添加Web引用:

  1. 右键单击解决方案资源管理器中的项目节点,然后选择添加服务参考

  2. 添加服务参考对话框中,点击高级...

  3. 服务参考设置对话框中,点击添加网络参考...

  4. 添加网络参考对话框中:

    一个。对于 Url ,请输入网站集网址,然后输入 _vti_bin / lists.asmx 。例如: http://sharepoint/sites/mySiteCollection/_vti_bin/lists.asmx

    湾对于 Web引用名称,请输入列表

    ℃。点击添加参考

  5. 现在将引用添加到项目中,您可以使用上面的代码来访问它。

    要从子站点获取列表,请通过将 _vti_bin / lists.asmx 添加到子站点的URL来更改服务URL属性以指向该子站点的Web服务,如上所述。