0

サード パーティの .Net アセンブリを参照するクラス ライブラリを含むソリューションがあります。これらのサード パーティ アセンブリには、非 .Net アセンブリへの依存関係があります。非 .Net アセンブリは bin フォルダーにコピーされないため、「xxx アセンブリまたはその依存関係の 1 つを読み込めませんでした」というエラーが発生します。そのため、ビルド前のイベントを作成してそれらを bin フォルダーにコピーすると、問題が解決しました。

次に、同じソリューションでコンソール プロジェクトから自分のプロジェクトを参照すると、同じエラーが発生したため、コンソール プロジェクトのビルド前イベントで同じことを行いました。繰り返しますが、これで問題は解決しました。

同じソリューションで MVC アプリケーションからクラス ライブラリ プロジェクトを参照すると、同じエラーが発生します。しかし、他の 2 つの状況で機能した同じビルド前イベントを使用しても、Web アプリの問題は解決しません。開発サーバーと IIS の両方を使用してみましたが、同じエラーが発生します。また、Global.asax の Application_Start() で AssemblyResolve にハンドラーを追加して、何が起こっているかを確認しようとしましたが、起動しません。

Web アプリの bin ディレクトリ以外の場所にファイルを配置する必要がありますか?

Windows 7、IIS 7、VS 2010、.Net 4、MVC 3

4

1 に答える 1

1

これが ASP.NET で機能しない理由は、ASP.NET ではマネージ アセンブリが一時フォルダーにシャドウ コピーされるため、実行時にアンマネージ ライブラリが見つからないためです。それらを見つけるには、PATH 環境変数の一部であるフォルダーに存在する必要があります。またはc:\windows\System32\Inetsrvフォルダに入れます。

于 2012-04-09T07:01:31.787 に答える