不同平台的C#GUID

不同平台的C#GUID,c#,mmc,C#,Mmc,我现在正在为MMC3.0编写一个管理单元,它应该支持x64和x86平台,但是GUID应该不同。 在C++中,我知道有一些宏,比如Win 32,但是我在C语言中找不到类似的东西。 我的目标是让代码看起来像 #ifdef _WIN32 [SnapInSettings("x86_guid")] #else [snapInSettings("x64_guid")] #endif x86_guid和x64_guid应为常量 我已经四处寻找了一段时间,但没有答案。您可以为64位构建创建一个新的解决方案/项

我现在正在为MMC3.0编写一个管理单元,它应该支持x64和x86平台,但是GUID应该不同。 在C++中,我知道有一些宏,比如Win 32,但是我在C语言中找不到类似的东西。 我的目标是让代码看起来像

#ifdef _WIN32
[SnapInSettings("x86_guid")]
#else
[snapInSettings("x64_guid")]
#endif
x86_guid和x64_guid应为常量


我已经四处寻找了一段时间,但没有答案。

您可以为64位构建创建一个新的解决方案/项目平台,然后为不同的平台定义不同的GUID-s。然后,您将为MMC管理单元构建两个DLL-s:一个用于32位平台,另一个用于64位平台

Build->Configuration Manager
中创建一个新的构建平台(例如
x64
),然后转到
Project properties
中的
Build
,为您的
x64
构建目标定义一个新符号。这类似于
\u WIN64
。您可以将
平台目标
下拉列表保留为
任何CPU
,只需确保64位MMC加载您的WIN64构建版本即可。(我不熟悉如何设置MMC管理单元,因此我不知道这涉及到什么。)

<>你一旦完成了上面的配置步骤,现在你就可以在C++中复制你的C++代码来检查生成目标:

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

GUID-s将是硬编码字符串,因此它们将是常量。

感谢您的回复。我不知道我是否正确理解它,如果我按照这个方法操作,我需要为相同的代码保留两个副本。这太难了,最后我决定取消定义x86配置的所有跟踪marcro,并为所有x64配置定义跟踪,无论是发布还是调试。将跟踪标志用作平台宏。@不,不需要维护代码的两个副本。您需要有2个副本,由此产生的DLL,但这也将与C++一样。您将只有一个代码库,并且必须构建它两次—一次用于x86,一次用于x64。