是什么导致ProcessorArchitecture锁定到x86或MSIL?

时间:2009-03-04 16:24:37

标签: .net labview

我有一个.Net 2.0应用程序,它使用COM来调用LabVIEW应用程序(构建为.exe)。 LabVIEW应用程序调用我们编写的各种.Net程序集。

通常这一切都很好。我有一个app.config,它将LabVIEW应用程序重定向到正确文件的正确版本,一切都很愉快。

昨天LabVIEW应用程序决定在这台PC上找不到我的程序集。 Fusion日志错误表明它需要x86版本的程序集,但MSIL版本已经加载。

请注意,我们使用platform = x86构建了有问题的程序集。另请注意,相同的构建在5个相同(下至硬件)PC上运行良好。

所以我想,嘿,我没有理由强制执行x86。我从构建中删除了平台规范,并构建了程序集的MSIL版本。

然后,Fusion遇到了同样的错误,但是当x86版本已经加载时,它说它想要组件的MSIL版本。

(我也尝试过使用corflags。)

我们不会在GAC中注册我们的程序集,它们都是应用程序的本地程序,并且该PC上没有其他程序集的副本。

哦,并且增加了混乱:在更新我们的数据库之后问题就消失了。它现在正在运行,我开始使用相同的构建。

有问题的程序集根本不是我们的数据库代码的一部分,它是一个单独的类及其相关的工厂。它使用数据库代码程序集,但它不与数据库直接通信。

是什么让.Net中的ProcessorArchitecture锁定到x86或MSIL?

这是否曾经发生在你身上,如果是的话,你做了什么来解决它?

(如果问题出现了,我会发布确切的Fusion日志,因为问题消失了我没有可用的日志。)

1 个答案:

答案 0 :(得分:0)

原来如此!事实证明,问题与数据库更新有关。有一个表需要一些未设置的静态数据。

虚拟snickerdoodle给任何能告诉我为什么从数据库查询中获取空值的人都会搞乱加载的ProcessorArchitecture ......