枚举在不同的计算机上不相等

本文关键字:计算机 不相等 枚举 | 更新日期: 2023-09-27 18:32:56

我正在使用 Wix Bootstrapper 枚举 LaunchAction

Microsoft.Tools.WindowsInstallerXml.Bootstrapper.LaunchAction

在我的机器上,当我这样做时,不同的笔记本电脑和虚拟机:

var m_state = LaunchAction.Install;

然后后来:

if(m_state == LaunchAction.Install)

它过去了。在调试器中查找m_state的值为"安装"。但是在我的同事机器上,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)

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

枚举在不同的计算机上不相等

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