2017-10-07 8 views
0

カスタムアプリケーションの開発に使用できるDLLの形式でSDKを提供するサードパーティのアプリケーションがあります彼らのサービスに接続する。 DLLはサードパーティアプリケーションのディレクトリにあり、他のDLLが依存しています。 SDKガイドには、Visual Studioを使用してテストアプリケーションを作成する手順が記載されており、Copy LocalFalseに設定してSDK DLLへの参照を追加すると記載されています。私は、テストWindowsフォーム.NETアプリケーションを作成し、指示に従ってDLLへの参照を追加し、すべて正常に動作しました。ただし、ASP.NETアプリケーションでDLLを参照すると、依存するサードパーティのDLLの1つに対してFileNotFoundException例外が発生します。ASP.NETアプリケーションでサードパーティのDLLを使用することはできませんが、Windows Forms .NETアプリケーションからは動作します

実験として、Copy LocalFalseに設定して、プロジェクトに問題のDLLへの参照を追加しようとしましたが、同じエラーが発生しました。 Copy LocalTrueに設定されていると、それ以上になりますが、別のDLLで失敗します。そのDLLへの参照の追加は、Copy Localの設定にかかわらず失敗します。

「標準」.NETアプリケーションがアセンブリとASP.NETアプリケーションを読み込む方法の違いについては問題があると思いますが、これを解決するにはどうすればよいか分かりません。

GACまたはアプリケーションのbinディレクトリに入れずに、ASP.NETアプリケーションでサードパーティのDLL(およびその扶養者)を参照する適切な方法はありますか?

+0

これが間違っている可能性がある方法はたくさんあります。そのため、あなたの質問に基づいて答えを出すことはできません。サードパーティのDLLは、CまたはC++に依存している場合や、ASP.NETで動作するように設計されていない場合があります。 DLLを参照する現代的な方法は、NuGet(パッケージが利用可能な場合)を使用することです。通常、NuGetは独自の依存関係を参照するための汚い詳細を処理します。 – NightOwl888

答えて

2

IIS上のASP.NET Webアプリケーションは、より多くのアクセス許可とリソースを持つユーザーセッションで実行されているWinFormsアプリケーションと比べて、限られたリソースでセッション0で実行されます。

これらは本質的に完全に異なる環境なので、ASP.NET/IISサポートを主張しているようなライブラリのベンダーには互換性がないと想定しないでください。避けてください。

マイクロソフト自身の技術(Officeオートメーション、System.Drawingなど)でさえ、WinFormsのみをサポートしますが、ASP.NETはサポートしていないことに注意してください。