2

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

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

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

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

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

然后 Fusion 出现了同样的错误,但它说它需要 MSIL 版本的程序集,而 x86 版本已经加载。

(我也尝试过使用corflags。)

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

哦,更令人困惑的是:更新我们的数据库后,问题就消失了。它现在可以使用,与我开始使用的构建相同。

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

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

你有没有遇到过这种情况,如果有,你做了什么来解决它?

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

4

1 回答 1

0

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

任何人都可以告诉我为什么从数据库查询中返回空值会与加载的处理器架构混淆...

于 2009-03-11T19:00:59.750 回答