2013-07-15 71 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