開發 C# 專案時引用了 COM 元件,在開發機上用 VS2010 都能正常編譯執行。但只要把專案複製到另一台沒註冊該 COM 元件的電腦,用 VS2010 打開專案,原本的 COM 參考就變成黃色驚嘆號,找不到路徑。甚至把 COM 元件放到 debug 目錄下重新加參考,換台機器還是一樣失效。如何讓專案在未註冊 COM 的環境下也能直接編譯通過?
若你的 COM 元件是 32 位元(大多數舊版 COM 都是),必須在專案屬性 → Build 中勾選 "Prefer 32-bit" 或明確設定 Platform target 為 x86。否則部署到 64 位元作業系統時,進程會以 64 位元模式執行,導致無法載入 32 位元 COM 元件,拋出 BadImageFormatException 或 COMException。
若使用 InstallShield Limited Edition 或 Professional 版打包:
DllRegisterServer,完成註冊動作,目標機器無需手動 regsvr32。若不想依賴系統註冊表(如需無管理員權限部署、多版本共存),可採用 Registration-Free COM:
YourApp.exe.manifest 放在同一目錄。此方式需目標機器支援 Side-by-Side 組件(Windows XP SP2 以上皆支援)。
做好這幾點,你的 C# 專案就能在任何乾淨的 Windows 機器上「開箱即用」,不再為 COM 參考找不到而頭痛。