我遇到了一种不寻常的情况,即相同的代码在特定机器上的行为不同。该程序是用 VB.NET 和 WF4 编写的。工作流 XAML 在运行时从数据库中读取并动态编译。我提到这一点只是为了在相关的情况下为我的问题提供背景信息。
具体来说,WF 中抛出的异常是:
从 'System.Double' 到 'System.Nullable`1[[System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 的无效转换
调试程序很困难,因为这台机器归另一个组织所有,用户几乎没有时间帮助我。我相信当 double 类型的 WF 变量传递给我编写并通过 WF 参数公开的方法时会发生异常。方法参数的类型为 Nullable(Of Double)。
有问题的代码已安装并定期在多个不同组织的多达 100 台计算机上运行。只有在这台特定的机器上,它的行为才会有所不同。
我想知道编译选项 Option Explicit、Option Strict 和 Option Infer 是否可能是异常的来源。由于对此机器上的 .net 框架部署进行了一些特定的配置更改,是否有可能在这台有问题的机器上覆盖这些编译选项中的一个或多个的值?这些选项的行为以及它们在运行时可能对 JIT 编译器产生的任何影响并不是我特别了解的框架领域。
这些程序集以 .net 4.0 为目标,并使用 VS2010 SP1 编译。有问题的机器正在运行 Win7 64 位。该程序集是为发布和 x64 平台编译的。
这是我在这个网站上发布的第一个问题,尽管我多年来一直使用它并取得了巨大的成功。提前感谢您的任何建议。