2013-07-15 123 views
0

我現在正在爲MMC3.0編寫一個管理單元,它應該支持x64和x86平臺,但GUID應該不同。 在C++中,我知道有像_WIN32這樣的宏,但我在C#中找不到像這樣的東西。 我的目標是讓代碼看起來像針對不同平臺的C#GUID

#ifdef _WIN32 
[SnapInSettings("x86_guid")] 
#else 
[snapInSettings("x64_guid")] 
#endif 

x86_guid和x64_guid應該是恆定的。

我一直在尋找一段時間,但沒有答案。

回答

0

您可以爲64位版本創建新的解決方案/項目平臺,然後爲不同的平臺定義不同的GUID。然後,您將構建2個DLL管理單元的MMC管理單元:一個用於32位平臺,另一個用於64位平臺。

Build->Configuration Manager創建一個新的構建platfom(例如x64),然後轉到BuildProject properties定義一個新的符號爲您x64構建目標。這將是類似於_WIN64。您可以將Platform target下拉框保留爲Any CPU,只需確保64位MMC加載您的_WIN64構建版本。 (我不熟悉如何設置MMC管理單元,所以我不知道這涉及到什麼)。

一旦你完成上述配置步驟,你現在可以非常複製C#中的C++代碼檢查構建目標:

#ifdef _WIN64 
[SnapInSettings("x64_guid")] 
#else 
[snapInSettings("x86_guid")] 
#endif 

GUID-s將是硬編碼的字符串,因此它們將是常量。

+0

感謝您的答覆。我不知道我是否正確理解,如果我遵循方式,我需要維護2副本爲相同的代碼。這太難了,最後我決定取消定義所有用於x86配置的TRACE marcro,併爲所有x64配置定義TRACE,無論是發佈還是調試。使用TRACE標誌作爲平臺宏。 –

+0

@JoeyYu不,你不需要維護2份代碼。您需要擁有2個生成的DLL副本,但這也與C++相同。你將只有一個代碼庫,你必須建立兩次 - 一次是x86,一次是x64。 – xxbbcc