2010-11-04 65 views
5

我們有一個包含許多不同庫的大型解決方案。我們剛剛遷移到64位系統的開發,這讓我們想到了我們應該爲解決方案中的每個單獨項目指定什麼平臺目標。C#解決方案,除了必須是x86的項目之外,所有項目都可以定位到AnyCPU嗎?

目前,我們只有一個引用32位DLL文件的庫項目。我們引用了這個DLL文件的Interop,但是當將x86作爲此項目的平臺時,我們會收到一個錯誤,同時將解決方案中剩餘的項目作爲「任何CPU」保留。

我的問題是,我們可以針對我們所有項目中的任何CPU,除了引用32位互操作的項目嗎?或者應該只是爲x86構建一切,因爲這似乎沒有任何錯誤。

回答

3

是的。

所有DLL,但其中一個可以是AnyCPU。

只要確保進程爲x86,並且所有DLL都將加載爲32位。

你得到的錯誤是什麼?添加錯誤消息可能會導致更有幫助的答案。

+0

我們正在開發一個64位機器。當我們針對除需要引用32位DLL的庫之外的所有項目的「任何CPU」時,它都不起作用。我們收到一條錯誤消息「檢索CLSID {數字}組件的COM類工廠失敗 – Horges 2010-11-04 03:02:30

+0

啊,是的,那麼它將無法正常工作,如果您只將EXE項目更改爲x86,它應該可以工作 – codekaizen 2010-11-04 05:09:36

+0

是的, 。我們只將主應用程序設置爲X86,其餘的可以保持爲AnyCPU。當(如果可以的話)我們獲得一個支持64位的新DLL時,我們需要做的就是更改主應用程序的目標平臺。謝謝codekaizen – Horges 2010-11-04 06:25:59

1

我想如果你所有的DLL都是anyCpu,你的.exe可以是x64或x86。但是,如果您的exe文件是x64或x86,則您的.dll文件不能成爲其他文件。此外,如果您的.exe是AnyCPU,我相信它會以本機的任何模式加載。這意味着你的dll可能是你係統的任何CPU或者本地模式。

相關問題