我有一个使用 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 日志内容,因为问题消失了,我没有可用的日志。)