2014-09-02 49 views
0

我试图使用Visual Studio开发和调试使用SharePoint 2007 API的Web应用程序。到目前为止,我一直在32位服务器上完成这项工作。今天我已经搬了64位开发服务器,当我尝试运行项目出来VS中,我得到:尝试在64位系统上为Microsoft.SharePoint.Search.dll加载格式不正确的程序

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. 

我已引用Microsoft.SharePoint.dll的和Microsoft.SharePoint.intl。这台机器上的GAC的dll。当我运行它时,它会自动从Microsoft.SharePoint.Search.dll中复制(即使复制本地参数为false)。我的项目Platform Target是“任何CPU”。我得到与x86相同的错误。如果我更改为x64,我会得到Could not load file or assembly 'MyProjects.dll'...incorrect format.。我也试过在启动后从bin中删除Microsoft.SharePoint.Search.dll,但后来我发现一个SharePoint错误,指出我的URL中的网站无法找到,我认为这也是一个点点问题。我不太确定问题是什么,但希望能够使用Visual Studio运行此应用程序。我怎样才能使它工作?

回答

0

两个Microsoft.SharePoint.dll的和Microsoft.SharePoint.intl.dll在服务器的GAC是专为任何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. 用x64构建的CassiniDev项目替换VS开发服务器。该项目具有插入到VS而不是默认的WebDev.WebServer.EXE的能力。所以你只需要下载源代码,并用x64目标平台构建。然后,您可以替换VS默认开发服务器exe文件,如CassiniDev项目所记录的那样,它将运行一个x64开发Web服务器来解决我的问题!

0

您需要在SharePoint的DLL的64位(或anyCPU)版本,使其工作

+0

感谢您的回复。我发现在哪里下载这些,但我很努力去理解这个问题。我现在已经在同一台服务器上部署并运行了IIS应用程序,推测使用相同的SharePoint.dll文件。在Visual Studio中运行它导致冲突的是什么? – xr280xr 2014-09-16 16:46:57

相关问题