2012-03-08 15 views
1

プリンタデバイスとインターフェイスするサードパーティの混合モードアセンブリを使用します。外部コンポーネントがサードパーティのアセンブリから例外をスローしました

私たちのアプリケーションの1つでは、アセンブリは正しく機能します。別の用途で

、それは次の例外を生成した

<startup useLegacyV2RuntimeActivationPolicy="true"> 
:いくつかの研究を行った後

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information. 

を、私はこの問題を解決するためにapp.configファイルに以下を追加することができることを発見しました

(この設定はapp.configで既に有効になっています)

これは「混合モードアセンブリ」の問題を解決しましたが、今すぐ表示されます

External component has thrown an exception 

奇妙なことに、正しく動作するアプリケーションと正しく動作しないアプリケーションがあることです。彼らは両方とも、同じコード(私たちのアセンブリの別のもの)を介してサードパーティのアセンブリを呼び出します。

同じコードパスを使用してサードパーティのアセンブリを呼び出す非常に単純なテストアプリケーションを作成しようとしましたが、「外部コンポーネントが例外をスローしました」というエラーでも失敗します。

私はすべてのアプリケーションのapp.configファイルを比較しましたが、それらは本質的に同じで、すべてのビルド設定がそれぞれ同じであることを二重チェックしました。どちらのプロジェクトも.NET 4.0とX86を対象としています。

2つのアプリケーションについて明らかに異なるものがありますが、私はそれが何であるかを特定することができません。

開発環境は、Visual Studio 2010

で誰もが、私は調査ができ、他のどのような分野に任意の提案を持っていますか?

+1

bin/workingディレクトリにコピーできない依存関係はありますか? – tsells

答えて

1

@tsellsは正しかった:欠落している依存関係が問題となっているサードパーティのアセンブリは、最初のアプリケーションのbinフォルダ内に存在していた別のDLLに依存

がありました。

作業中のアプリケーションのbinフォルダにあるすべてのファイルを、正常に動作していないアプリケーションのbinフォルダにコピーして問題を解決しました。

そこから、どのDLLが見つからなかったかを推測し、2番目のアプリケーションプロジェクトに含めるだけでした。

1

依存関係が存在しない場合、マネージにはCheckAsm、アンマネージライブラリにはDependency Walkerなどのツールを使用して依存関係をチェックできます。

関連する問題