建立您自己的並存元件時,請遵循建立並存元件 的 指導方針,並根據下列指導方針撰寫元件中使用的任何 DLL:
您的 DLL 應該設計成讓多個版本可以同時和在同一個進程中執行,而不會互相干擾。 例如,許多應用程式裝載多個外掛程式,每個外掛程式都需要不同版本的一個元件。 並存元件的開發人員必須設計和測試,以確保在相同進程中同時執行時,多個元件的版本正常運作。
如果您打算在早於 Windows XP 的系統上提供元件作為共用元件,您必須繼續將這些系統上的元件安裝為單一實例共用元件。 在此情況下,您必須確保元件回溯相容。
在系統上執行多個版本的組件時,評估物件的使用方式。 判斷元件的不同版本是否需要個別的數據結構,例如記憶體對應檔案、命名管道、已註冊的 Windows 訊息和類別、共用記憶體、旗號、Mutex 和硬體驅動程式。 各程序集版本使用的任何數據結構都必須向後相容。 決定可在版本之間使用哪些數據結構,以及哪些數據結構必須是版本專用的。 判斷共享數據結構是否需要個別的同步處理物件,例如號誌和 Mutex。
某些物件,例如窗口類別和 Atom,會針對每個進程唯一命名。 物件,例如視窗類別,應該使用指令檔在每個組件中進行版本控制。 對於 Atoms 之類的物件,除非您打算跨版本共用,否則請使用版本特定的標識碼。 如果您使用版本特定的識別碼,請使用四部分版本控制號碼。
在任何 DLL 中不包含自我註冊程序代碼。 並存元件中的 DLL 無法自我註冊。
使用 #define 語句定義 DLL 中的所有版本特定名稱。 這可讓所有登錄機碼從單一位置進行變更。 當您發行新版本的元件時,只需要變更此 #define 語句。 例如:
#define MyRegistryKey "MyAssembly1.0.0.0"將任何非永久性數據儲存在 Temp 目錄中。
請勿將用戶資料放入全域性的地方。 將應用程式數據與用戶數據分開。
將所有共用檔案指派相依於應用程式名稱的檔案版本。
指定所有跨過程使用的訊息和數據結構的版本,以避免非預期的跨過程共用。
您的 DLL 不應依賴可能不存在的版本共用,例如那些未在您的元件不同版本中共用的記憶體區段。
如果您新增的新功能未遵循原始 DLL 的二進位介面相容性合約,您必須指派新的 CLSID、ProgId 和檔名。 將來的並存元件版本需要使用此 CLSID、ProgId 和檔名。 當未並存的 DLL 版本在並存版本上註冊時,這可防止發生衝突。
如果您重複使用相同的 CLSID 或 ProgId,請測試以確保元件回溯相容。
在組件程式碼中初始化並設定組件的預設設定。 請勿在登錄中儲存預設值設定。
將版本指派給所有資料結構。
您的 DLL 應該儲存並行組件的狀態,如 在撰寫並行組件狀態儲存時所述,。