2014-09-02 46 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

相關問題