尝试在64位系统上加载Microsoft.SharePoint.Search.dll格式不正确的程序

时间:2014-09-02 19:02:44

标签: visual-studio-2010 sharepoint 64-bit sharepoint-2007 moss

我尝试使用Visual Studio开发和调试使用SharePoint 2007 API的Web应用程序。到目前为止,我在32位服务器上做得很好。今天我已经转移到64位开发服务器,当我尝试从VS运行项目时,我得到:

Could not load file or assembly 'Microsoft.SharePoint.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. An attempt was made to load a program with an incorrect format.

我在此计算机上从GAC引用了Microsoft.SharePoint.dll和Microsoft.SharePoint.intl.dll。当我运行它时,它会自动从某个地方复制Microsoft.SharePoint.Search.dll(即使复制本地在引用上为false)。我的项目平台目标是"任何CPU"。我用x86得到了同样的错误。如果我更改为x64,我会获得Could not load file or assembly 'MyProjects.dll'...incorrect format.。我还尝试在启动后从垃圾箱中删除Microsoft.SharePoint.Search.dll,但后来我收到一条SharePoint错误,说我的网址无法找到,我相信这也是一个比特问题。我不太确定问题是什么,但希望能够从Visual Studio中运行此应用程序。我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

您需要使用Share64 dll的x64(或任何CPU)版本才能使其正常工作

答案 1 :(得分:0)

服务器GAC中的Microsoft.SharePoint.dll和Microsoft.SharePoint.intl.dll都是为任何CPU构建的。当我在Visual Studio中构建我的Web应用程序时,它会自动将Microsoft.SharePoint.Search.dll复制到我的bin中,大概是因为它被Microsoft.SharePoint.dll引用。 SharePoint.Search.dll不在GAC中。它是从64位12 \ ISAPI目录复制而来,使用" Amd64"目标架构(尽管我的服务器具有Intel Xeon CPU)。所以我认为问题是VS在32位进程中运行Web应用程序,当它尝试加载64位SharePoint.Search.dll时会导致错误。

我的第一个想法是在我的项目中明确引用32位SharePoint.Search.dll。这会导致错误消失,但会被错误替换为无法找到[我的SharePoint站点URL]上的网站。我相信这是因为我现在尝试从32位进程访问运行在64位应用程序池中的SharePoint站点。所以我真正需要的是Visual Studio使用64位主机进程运行我的Web应用程序。这看起来像VS 2012的选项,但不是2010.我在VS 2010中找到的替代方案是:

  1. 在项目属性Web选项卡上,将其配置为使用本地IIS实例运行。这将向默认站点添加虚拟目录,默认站点以64位模式运行。这对我来说不是一个好的解决方案,因为我希望允许多个开发人员同时在同一台服务器上处理同一个项目。使用相同的网站会导致冲突。如果有一种方法可以在用户上有条件地配置站点名称,那就没问题。我选择先尝试#2。

  2. 将VS Development Server替换为CassiniDev项目的x64版本。该项目具有插入VS的能力,而不是默认的WebDev.WebServer.EXE。所以你只需要下载源代码,并使用x64目标平台构建。然后您可以替换VS默认开发服务器exe,如CassiniDev项目所记录的那样,它将运行x64开发Web服务器来解决我的问题!