26

アプリケーションの負荷に関する問題のデバッグに役立つヒント/提案/洞察を探しています。ファイルまたはアセンブリを読み込めませんでした...

この問題が発生しているソリューション/プロジェクトは、Visual Studio 2008 の作業コピーから Visual Studio 2010 リリース候補への変換です。変換プロセスは成功したようで、すべてのソリューション プロジェクトがFramework 4に設定されています。

例外はサードパーティのコンポーネント (グラフィックス処理ライブラリ) にありますが、問題のある DLL を使用している他のユーザーに役立つ可能性があります。

ファイルまたはアセンブリ 'Aurigma.GraphicsMill.DLL' またはその依存関係の 1 つを読み込めませんでした。は有効な Win32 アプリケーションではありません。(HRESULT からの例外: 0x800700C1)

この例外で紛らわしいのは、追加のテキスト: is not a valid Win32 application です

完全な例外スタック トレースはPasteBinにありますが、この問題についてこれ以上の光を当てているようには見えません...

私がこれまでに試したことは成功していません:

  1. Visual Studio 2010 RC のシンプルなクリーン、リビルド、再起動の組み合わせ。
  2. 問題の DLL を削除して再度追加します。
  3. 問題の DLL で「ローカルにコピー」を true と false に切り替えます。
  4. 「成功したビルド」の後、問題の DLL が bin\debug フォルダーに表示されることを確認します。
  5. 問題の DLL への不要な参照をチェックしています (何も見つかりません)。
  6. 問題の DLL に関連付けられたライセンス ファイルは、それと同じディレクトリにあります。

また、アプリケーションの読み込み時にデバッガーのブレークポイントにヒットすることもありませんでした。

4

7 に答える 7

37

この問題の原因は、.net v4 に切り替えたため、特に asp.net v4 用に IIS7 で新しいアプリケーション プールを使用していることです (プール自体は「ASP.NET v4.0」と呼ばれます)。 )

アプリケーション プールの詳細設定セクションで、[32 ビット アプリケーションを有効にする] を true に設定すると、問題の DLL が期待どおりにロードされるようになります。

Web アプリケーションに独自のアプリケーション プールがある場合は、明らかに同じことを行う必要があります。

Windows Server 2008 (R2 ではない) を使用している場合は、アプリケーション プール ID に正しいアクセス許可を割り当てる方法に関するこの投稿を参照してください。

于 2010-08-04T09:36:10.410 に答える
7

ヒント

問題の一部を解決したものの、全体的な問題を解決できなかった 1 つの調査方法は、x86 (32 ビット) アセンブリと x64 (64 ビット) アセンブリが相互に参照しているというものでした。

64 ビット アセンブリに依存/参照している 32 ビット アセンブリがないことを確認します。

于 2010-06-23T03:48:15.250 に答える
7

実行可能プロジェクトが任意の CPU に設定されていて、x86 でコンパイルされた dll への参照がある場合、同様の例外が発生しました。

実行可能ファイルを x86 に設定して、動作するかどうかを確認してください。エラーの詳細を取得するためにFusion ログを試行しない場合。

于 2010-02-15T01:39:53.107 に答える
2

奇妙なことに、私は同じ問題に直面していました。アプリ プールの詳細設定で許可する 32 ビット アプリケーションに「false」を設定すると、機能しました。

于 2013-07-01T11:21:54.417 に答える
1

アプリケーション プールの詳細設定セクションを変更する -> [32 ビット アプリケーションを有効にする] を true に設定すると、問題が解決しました。

于 2013-01-08T08:45:58.940 に答える
0

DLL がブロックされているかどうかを確認します。Dll > プロパティ > ブロック解除を右クリックします。

于 2014-11-11T23:02:03.353 に答える