COMを使用してLabVIEWアプリケーション(.exeとしてビルド)を呼び出す.Net 2.0アプリケーションがあります。LabVIEW アプリケーションは、作成したさまざまな .Net アセンブリを呼び出します。
通常、これはすべて正常に機能します。LabVIEWアプリを適切なファイルの適切なバージョンにリダイレクトするapp.configがありますが、すべて問題ありません。
昨日、LabVIEW アプリケーションは、この 1 台の PC でアセンブリの 1 つが見つからないと判断しました。Fusion のログ エラーは、アセンブリの x86 バージョンが必要であるが、MSIL バージョンは既に読み込まれていることを示していました。
問題のアセンブリを platform=x86 でビルドしたことに注意してください。また、同じビルドが 5 台の同一の (ハードウェアに至るまで) PC で問題なく動作したことにも注意してください。
だから私は、x86 を強制する理由はないと考えました。ビルドからプラットフォーム スペックを削除し、アセンブリの MSIL バージョンをビルドしました。
その後、Fusion で同じエラーが発生しましたが、x86 バージョンが既に読み込まれているときに、アセンブリの MSIL バージョンが必要であるとのことでした。
(コルフラグもいじってみました。)
アセンブリを GAC に登録しません。アセンブリはすべてアプリケーションに対してローカルであり、その PC にはアセンブリの他のコピーはありません。
ああ、混乱に加えて、データベースを更新した後、すべての問題が解消されました。私が始めたのと同じビルドで、今は動いています。
問題のアセンブリは、DB コードの一部ではなく、別のクラスとそれに関連付けられたファクトリです。DB コード アセンブリを使用しますが、データベースとの直接通信は行いません。
.Net の ProcessorArchitecture が x86 または MSIL にロックされる理由は何ですか?
これはあなたに起こったことがありますか? もしそうなら、それを修正するために何をしましたか?
(問題が再発した場合は、正確な Fusion ログを投稿します。問題が解決したため、利用可能なログがありません。)