9

いくつかのプロジェクト(クラスライブラリとWebアプリケーション)を備えた.netVisualStudioソリューションがあります。

プロジェクト間でファイルを移動したり、新しいプロジェクトを作成したり、使用されていないプロジェクトを削除したり、既存のプロジェクトの名前を変更したりするために、いくつかの屈折を行いました。

ソリューションは問題なくビルドされますが、Webアプリケーションを実行すると、次の例外が発生します。

ファイルまたはアセンブリ'XXX.YYY'またはその依存関係の1つを読み込めませんでした。システムは指定されたファイルを見つけることができません。

屈折で削除されたXXX.YYYというプロジェクトは、XXX.YYYというdllを出力しました。ただし、これはアプリケーションのどこでも使用されていません。Webアプリケーションのobjディレクトリとbinフォルダを削除して再構築しましたが、それでも発生します。

これが発生する可能性があるときに誰かが何かアイデアを持っていますか、何かヒントはありますか?

アップデート:

私の問題を更新します。コードを別のコンピューターに移動してそこから実行すると、この問題は発生せずに正常にビルドおよび実行されました。したがって、これにより、問題はコードベースではなくPCにあると思います。たぶん私のPCに何かがキャッシュされています。「C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ TemporaryASP.NET Files」にある一時ファイルを削除しましたが、うまくいきませんでした。

したがって、キャッシュされる可能性のある他のすべてのこと、またはそれが私のPCで発生するその他の理由。

さらなるアップデート

これに関する別の更新。私は他の開発者のマシンで同じコードを実行しましたが、彼はそれを実行するのに問題はありません。だから間違いなく私のマシンに何かがあるはずです!私たちのマシンでの唯一の違いは、クラシックモードでアプリのアプリプールを使用してIIS7を実行していることです。他の開発者はIIS6を実行しています。

情報に関する2つの新しい部分。まず、web.configのhttpmodulesで、カスタムhttpモジュールを追加する前に削除する必要があります。他の開発者はこれを行う必要はありません。次に、プロジェクトにXXXというクラスライブラリを作成することで、「ハック」を介して「ファイルまたはアセンブリ'XXX.YYY'またはその依存関係の1つを読み込めませんでした」という問題を修正できました。 .YYYと、検索対象のクラスを含みます。これらはすべてカスタムコントロールです。System.Web.UI.WebControls.WebControlから継承します。

それ以上の考え...

4

8 に答える 8

6

考えられる理由は2つあります。

1)Webアプリケーションを実行するときは、マシンのどこかで古いアセンブリを引き続き使用します。古いアセンブリは古いアセンブリ「XXX.YYY」を参照していました。

2)作成した最新のバイナリは、まだ古いアセンブリ「XXX.YYY」を参照しています。

Webアプリが使用しているアセンブリを確認するには、デバッガーを実行している場合、出力ウィンドウから簡単に確認できます。出力の最初の数行である必要があります。確認するもう1つの方法は、デバッグ中にVS.NETIDEでモジュールウィンドウを開くことです。

何らかの理由でデバッグできない場合、またはデバッガーの接続に問題がある場合は、fuslogvwを使用するのがもう1つの簡単な方法です。正常にロードされたすべてのアセンブリと、ロードに失敗したアセンブリの正確な場所がわかります。Windows7で管理者としてfuslogvwを実行していることを確認してください。

Webアプリケーションが正常にロードされたアセンブリを見つけたら、それらのアセンブリに対してildasmを実行して、それらが参照しているアセンブリを確認できます。残念ながら、1つずつ確認する必要があります。

私の推測では、正常にロードされたアセンブリの一部は、実際にはASP.NETキャッシュまたはGACのどこかから来ています。

于 2011-01-02T18:28:12.087 に答える
2

ビルド出力の診断ログを有効にし([ツール]->[オプション]->[ビルドと実行]->[出力ログの詳細度]->[診断])、ソリューションをビルドして、Visual Studioがdll(somedll.dllバージョンxxx.yy)を選択する場所を確認します。次に、アプリケーションを実行し、ランタイムがdllを解決しようとしている場所を確認します。(Windbgはオプションです)。

于 2011-12-07T18:28:22.040 に答える
1

プロジェクトのビルド構成を確認してください。参照に64ビットのコンパイル済みdllがあり、メインプロジェクトが32ビット(または任意のCPUとマシンが32ビット)の場合、またはその逆の場合、このエラーが発生します

于 2011-01-01T23:17:59.917 に答える
1

すべてのEXEとDLLで依存関係ウォーカー(依存関係)を使用して、依存関係が欠落しているものを確認します。最良の結果を得るには、プロジェクトの作業ディレクトリから依存を実行する必要があります。

どのEXE/DLLが原因であるかがわかったら、そのプロジェクトの設定に移動し、依存関係についての不満がそこに記載されているかどうかを確認します。

編集:数分前に別のことが起こりました...実行可能コードの読み込みを妨げる可能性のあるMSターゲットウェア(たとえば、InetエクスプローラーでDLする場合)によってダウンロード済みとしてマークされたために、依存関係のいずれかが「ブロック」された場合。Windowsエクスプローラーで実行可能ファイル(DLL / EXE)のプロパティを確認し、最初のページにブロック解除ボタンがあるかどうかを確認します。その場合は、そのボタンをクリックします。これは私がしばらく前に理解するのに少し時間がかかりました、うまくいけばそれが助けになるでしょう。

于 2011-01-01T23:18:45.690 に答える
1

「XXX.YYY」というテキストのソリューション検索を実行し、すべての出現箇所を削除します。たぶんあなたはいくつかのweb.configファイルでsthを省略しています。

さらに、ソリューション検索で何も見つからない場合は、*。csprojファイルを確認できます。これらは基本的にテキストファイルであるため、参照を削除しても問題はありません。

于 2011-01-01T23:48:17.090 に答える
0

素晴らしいニュース私は問題を解決しました!!! .netランタイム環境を再インストールする必要がありました。また、IISからサイトを削除し、Webサイトを再度再追加しました。実行したところ、問題は発生せず、サイトが実行されました。

皆様のご協力とご支援に心より感謝申し上げます。すべてのアドバイスと助けが私をこれを解決する方向に導いてくれました!

于 2011-01-08T15:22:40.300 に答える
0

依存関係が欠落しているだけです。プロジェクトAにプロジェクトCへの参照があるプロジェクトBへの参照があるような状況である可能性があります。出力ディレクトリにプロジェクトCのDLLがありません。

于 2011-01-02T00:15:17.803 に答える
0

に移動しReferencesます。不平を言っているアセンブリを選択します。それを選択してメニューオプションに移動し、下部で選択します。アセンブリが選択されている間に、プロパティウィンドウでそのプロパティを表示し、値を探します。値がに設定されている場合は、に設定します。ソリューションを構築して公開します。問題を正常に解決するはずです。Solution ExplorerVisual StudioViewProperty WindowCopy LocalFalseTrue

于 2015-08-25T08:19:39.467 に答える