C# 枚举不';在不同的机器上不相等吗?

C# 枚举不';在不同的机器上不相等吗?,c#,enums,wix,C#,Enums,Wix,我正在使用WixBootstrapperEnumLaunchAction: Microsoft.Tools.WindowsInstallerXml.Bootstrapper.LaunchAction 在我的计算机上,当我执行以下操作时,会使用不同的笔记本电脑和虚拟机: var m_state = LaunchAction.Install; 随后: if(m_state == LaunchAction.Install) 它过去了。查看调试器m_状态的值为Install。然而,在我的同事的机器

我正在使用Wix
Bootstrapper
Enum
LaunchAction

Microsoft.Tools.WindowsInstallerXml.Bootstrapper.LaunchAction
在我的计算机上,当我执行以下操作时,会使用不同的笔记本电脑和虚拟机:

var m_state = LaunchAction.Install;
随后:

if(m_state == LaunchAction.Install)
它过去了。查看调试器m_状态的值为Install。然而,在我的同事的机器上,if语句没有通过。在调试器中查看,值完全相同。我的想法是,他可能有一个过时/更新版本的
WixBootstrapper
DLL,但这实际上不应该有任何影响,因为它在编译时会使用该DLL

编辑:

将它们作为
int
值进行比较,在我的机器和笔记本电脑上,两个值都是
5
。在我同事的机器上,
m_state
5
LaunchAction.Install
4

编辑2:

所以我们相信他机器上的DLL来自Wix工具集3.9,而其他机器使用的是3.10。在3.9中,
LaunchAction.Install
是4,而在3.10中是5

自定义引导程序将此DLL作为有效负载文件。我们认为所添加的负载文件是3.10版本,但最初编译时使用的是3.9版本。导致比较结果为:

if(m_state == 4)

答案为false,因为m_state的值使用的是3.10版本,因此它的读数为5。

切换WiX版本时,必须重新生成引导程序应用程序和捆绑包。它们是源代码兼容的,但不能保证BAs是二进制兼容的。

如果将值强制转换为
int
,这两个值是什么?另外,您确定调试器运行的代码版本正确吗?这可能会导致行号偏移。