2011-04-04 74 views

回答

1

「二進制兼容性」是一個VB6術語,它與生成COM DLL的接口和類使用相同的GUID有關,因此您可以更新現有的DLL,而不用擔心更新會破壞現有程序。 .NET代碼的規則完全不同,抖動有很大幫助。

也不是DLL項目的平臺目標設置非常相關。只有EXE項目的設置很重要,它決定了該過程的微小性。如果它依賴於傳統的32位代碼,則可以考慮強制將DLL加載到x86。這會使程序在BadImageFormatException上更快崩潰,而不是獲取不明顯的COM異常。

+0

我們實際上有另一種方式,一個使用此程序集的32位可執行文件。現在,在x86環境中,這不是問題,但在x64環境中,這確實成了一個問題(並且隨後提到了BadImageFormatException)我試圖弄清楚是否更改平臺目標會導致更新DLL不會破壞我們現有的程序(「二進制可比性」可能仍然是相關的,因爲調用應用程序是VB6?) – Alex 2011-04-06 15:38:46

+0

DLL程序集應始終在平臺目標設置爲AnyCPU的情況下進行編譯。所以他們會以任何方式正常工作。如果您知道EXE以32位進程運行的事實,那麼對於我來說,如何才能獲得該異常並不清楚。他們對註冊表有自己的看法,他們無法找到或加載64位COM服務器。不同的例外。三重檢查你的假設,即EXE在32位模式下執行。例如,您會在TaskMgr.exe的「進程」選項卡中看到* 32。 – 2011-04-06 15:47:04

+0

是的,調用應用程序的確在32位模式下運行(它在進程列表中有* 32)。 – Alex 2011-04-06 16:08:22