首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

64 位元 Excel 增益集開發與部署完整指南 (VSTO / Shared Add-in)

     編輯:關於.NET

背景

Office 2010 起分 32/64 位元。64 位元 Excel 可處理 2GB+ 大數據集,隨 64 位元 OS 普及、記憶體增大,64 位元使用者比例持續上升。但 32 位元 COM 元件無法載入 64 位元 Excel 進程,增益集必須針對目標位元編譯部署。

一、偵測使用者 Excel 位元數

手動查看

  • Excel 2010:檔案 → 說明 → 版本資訊顯示「32 位元」或「64 位元」。
  • Excel 2013/2016+:檔案 → 帳戶 → 關於 Excel。
Excel 2010 版本資訊 Excel 2013 版本資訊

程式碼偵測 (登錄表)

64 位元 Office 安裝後,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<版本>\Outlook 下會有 Bitness (REG_SZ) 值:x86 或 x64。版本對應:14=2010, 15=2013, 16=2016+。

// 讀取範例
string keyPath = @"SOFTWARE\Microsoft\Office\15.0\Outlook";
using (var key = Registry.LocalMachine.OpenSubKey(keyPath)) {
    string bitness = key?.GetValue("Bitness")?.ToString(); // "x64" 或 "x86"
}
登錄表 Bitness

二、針對 64 位元編譯組件

專案屬性設定

  • 目標平台:明確設為 x64 (勿用 Any CPU,COM 註冊需位元匹配)。
  • 註冊為 COM Interop:勾選,建置時自動呼叫 regasm。
目標平台 x64

VS 舊版自動註冊失敗問題 (VS2013 以前)

VS 呼叫 32 位元 regasm 註冊 64 位元 DLL 會報錯「非有效組件」。解法:在 建置事件 → 建置後事件命令列 指定 64 位元 regasm:

"%Windir%\Microsoft.NET\Framework64\v2.0.50727\regasm" "$(TargetPath)" /codebase /s
建置後事件指定 64 位元 regasm 註冊錯誤截圖

三、部署策略:雙套件 + 智慧安裝器

  1. 分別編譯:產出 MyAddin.x86.dll、MyAddin.x64.dll。
  2. 打包對應 regasm:32 位元 %Windir%\Microsoft.NET\Framework\v2.0.50727\regasm.exe、64 位元 %Windir%\Microsoft.NET\Framework64\v2.0.50727\regasm.exe。
  3. 安裝時偵測:讀取登錄表 Bitness,決定複製哪組 DLL 並呼叫對應 regasm 註冊。

四、WOW64 機制補充

  • 32 位元 Office 透過 WOW64 執行於 64 位元 OS,32 位元增益集可正常載入。
  • 64 位元 Office **僅能** 安裝於 64 位元 OS,**必須** 載入 64 位元增益集。

總結

關鍵三步:偵測位元 → 目標平台編譯 → 對應 regasm 註冊。建立雙位元部署套件並整合偵測邏輯至安裝程式,即可完整支援 32/64 位元 Excel 使用者群。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved