2

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 ログを投稿します。問題が解決したため、利用可能なログがありません。)

4

1 に答える 1

0

そう!問題はDBの更新に関連していたことが判明しました。設定されていない静的データを必要とするテーブルがありました。

DBクエリからnullを返すと、ロードされたProcessorArchitectureが混乱する理由を教えてくれる人への仮想スニッカードゥードル...

于 2009-03-11T19:00:59.750 に答える