3

我们有一个基于混合(表单和 Windows)的 SharePoint 2010 站点,我正在尝试在 c# 中使用对象模型(命令行控制台应用程序,引用 Microsoft.SharePoint,解决方案平台目标是 x64 [在 VS 2012 中我不得不创建一个新的解决方案平台,从 <Empty>] 复制设置。)

在 PowerShell 中,我可以简单地执行类似的操作

$site = Get-SPSite http://www.server.com/sites/site1

它成功检索到对象,我可以随意打开包含的 SPWeb 等。但是,当我在 C# 中尝试类似的逻辑时(在相同的用户凭据下的同一个框上),比如

using(SPSite site = new SPSite("http://www.server.com/sites/site1") { }

它因 FileNotFoundException 而失败。任何使用相关指南的尝试都遵循相同的问题。为什么会发生这种情况?

此外,我是该框的管理员,并且还明确地在数据库上具有 sysadmin 服务器角色。

4

2 回答 2

3

我假设您在命令提示符下执行此操作?如果是这样,请确保您在 x64 中编译您的项目。这是我在 x86 或任何 CPU 中编译代码时看到的错误消息。

于 2012-12-19T15:22:36.573 回答
0

对于任何遇到这种情况的人。PowerShell 3 不支持 SharePoint 方法。我在安装 Powershell v3 后发现,powershell -version 2在运行 SharePoint 命令之前,我必须先使用该命令进入另一个 shell,这让我意识到我的 VS 项目的目标是 .NET 4.5;一旦我将其更改为 .NET 3.5,一切正常。

我假设尽管 SharePoint 库以 .NET 3.5 为目标,并且理论上 .NET 4 CLR 可以处理 .NET 2 CLR 库,但使用 SharePoint 2010 的项目不支持以任何方式定位 .NET 4/4.5。

当然,很高兴被证明是错误的;)

于 2012-12-20T14:01:21.677 回答