1

プリンタデバイスとインターフェイスするサードパーティの混合モードアセンブリを使用します。

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

別のアプリケーションでは、次の例外が生成されていました。

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ファイルに以下を追加できることがわかりました。

<startup useLegacyV2RuntimeActivationPolicy="true">

(動作するアプリケーションは、app.configにすでにこの設定があります)

これで「混合モードアセンブリ」の問題は解決しましたが、今では多少異なる問題が発生しています。

External component has thrown an exception

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

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

すべてのアプリケーションのapp.configファイルを比較しましたが、それらは基本的に同じであり、すべてのビルド設定がそれぞれで同じであることを再確認しました。どちらのプロジェクトも.NET4.0とX86を対象としています。

2つのアプリケーションには明らかに異なる点がありますが、それが何であるかを特定するのに迷っています。

開発環境はVisualStudio2010です。

誰かが私が調査できる他の分野について何か提案がありますか?

4

2 に答える 2

1

@tsellsは正しかった:依存関係が欠落していた

問題のサードパーティアセンブリは、最初のアプリケーションのbinフォルダに存在する別のDLLに依存していました。

動作しているアプリケーションのbinフォルダーから動作していないアプリケーションのbinフォルダーにすべてのファイルをコピーしたところ、問題は解決しました。

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

于 2012-03-08T15:33:36.350 に答える
1

依存関係が不足している場合は、マネージド ライブラリのCheckAsmやアンマネージド ライブラリのDependency Walkerなどのツールを使用して、依存関係を確認できます。

于 2012-03-08T15:42:26.957 に答える