VB.NET 專案引用第三方 COM DLL,雖然註冊成功且引用正常,但在實例化類時拋出 80040154 (REGDB_E_CLASSNOTREG) 異常。引用屬性顯示路徑指向 obj\Debug\Interop.xxx.dll。
核心衝突:目標 DLL 為 32 位,但專案預設編譯為「任何 CPU」(64 位進程),導致無法加載 32 位 COM 組件。
SysWOW64 下註冊不足夠,64 位進程無法訪問 32 位註冊表視圖Interop.xxx.dll 為自動生成的互操作程序集,位數必須與宿主進程一致Prefer 32-bit(若存在),或顯式設置 Target CPU = x86x86 平台,並將專案平台設為 x86使用 CorFlags.exe 檢查輸出的 .exe:
CorFlags YourApp.exe
// 輸出應包含 : 32BIT = 1
False 可減少版本衝突