就像標題所說,如果我更改vb.net程序集的目標cpu,它會破壞二進制兼容性嗎?是否更改vb.net break二進制兼容性的目標cpu?
回答
「二進制兼容性」是一個VB6術語,它與生成COM DLL的接口和類使用相同的GUID有關,因此您可以更新現有的DLL,而不用擔心更新會破壞現有程序。 .NET代碼的規則完全不同,抖動有很大幫助。
也不是DLL項目的平臺目標設置非常相關。只有EXE項目的設置很重要,它決定了該過程的微小性。如果它依賴於傳統的32位代碼,則可以考慮強制將DLL加載到x86。這會使程序在BadImageFormatException上更快崩潰,而不是獲取不明顯的COM異常。
我們實際上有另一種方式,一個使用此程序集的32位可執行文件。現在,在x86環境中,這不是問題,但在x64環境中,這確實成了一個問題(並且隨後提到了BadImageFormatException)我試圖弄清楚是否更改平臺目標會導致更新DLL不會破壞我們現有的程序(「二進制可比性」可能仍然是相關的,因爲調用應用程序是VB6?) – Alex 2011-04-06 15:38:46
DLL程序集應始終在平臺目標設置爲AnyCPU的情況下進行編譯。所以他們會以任何方式正常工作。如果您知道EXE以32位進程運行的事實,那麼對於我來說,如何才能獲得該異常並不清楚。他們對註冊表有自己的看法,他們無法找到或加載64位COM服務器。不同的例外。三重檢查你的假設,即EXE在32位模式下執行。例如,您會在TaskMgr.exe的「進程」選項卡中看到* 32。 – 2011-04-06 15:47:04
是的,調用應用程序的確在32位模式下運行(它在進程列表中有* 32)。 – Alex 2011-04-06 16:08:22
- 1. Haskell二進制兼容性
- 2. 二進制兼容性
- 3. Linux二進制兼容性
- 4. GCC目標特異性和二進制兼容性
- 5. STL容器的二進制兼容性
- 6. 是否改變一個方法來添加隱藏的這個指針break二進制兼容性?
- 7. 文件的二進制兼容性*
- 8. 規避vb6二進制兼容性
- 9. 與C的二進制兼容性
- 10. Solaris:libSTLPort.so與libCstd.so的二進制兼容性?
- 11. j2me波蘭語二進制兼容性
- 12. 二進制兼容性vs向後兼容性
- 13. 確定二進制兼容性linux下
- 14. COM接口和二進制兼容性
- 15. Linux發行版二進制兼容性
- 16. 二進制文件和兼容性標準信息 - C++/JAVA
- 17. 更改純虛擬到虛擬,保持二進制兼容的
- 18. 爲什麼必須將版本兼容性設置爲不兼容二進制兼容性,然後回到二進制兼容性才能使其工作?
- 19. 什麼是Java中的二進制兼容性?
- 20. 番石榴二進制是否與以前的版本兼容?
- 21. 二進制兼容關於更改返回類型C++
- 22. Java中的重構方法和二進制兼容性
- 23. 檢查共享庫是否與二進制兼容?
- 24. 二郎 - 兼容CPU的/服務器
- 25. Java - 抽象類和子類的二進制兼容性
- 26. 刪除「最終」關鍵字是否會影響二進制兼容性?
- 27. VB6二進制兼容性 - 添加新事件
- 28. VS2010和VS2012之間的二進制C++庫兼容性?
- 29. shell的二進制運算符兼容性
- 30. 清理代碼中斷二進制兼容性
你能更具體地說明你想要避免什麼問題嗎? – JaredPar 2011-04-04 21:07:11
我會這麼認爲 - 但我不確定(因此此評論)。 – ChrisF 2011-04-04 21:07:46