私はウェブサイト「プロジェクト」を持っています。時々更新する外部 DLL へのアセンブリ参照があります (一種の「フレームワーク」)。Visual Studio 2008 は、コンパイル時に参照を更新するために使用する "更新" ファイルを喜んで作成します。
外部アセンブリの列挙型に追加し、再コンパイルしました。Web サイト プロジェクトに戻り、参照を更新しました ("Bin" フォルダーの下にリストされている外部 DLL を右クリックして [参照の更新] を選択し、Web サイトの [プロパティ ページ] と [参照] ページで、私の外部アセンブリと「更新」ボタンをクリックします。
Web サイトの App_Code フォルダーに、外部アセンブリからの新しい列挙値を使用するいくつかの変更を加えたクラスがあります。Intellisense は新しい追加機能を検出し、IDE は、ソリューションを構築しようとするまで、私がそれを使用してもまったく文句を言いません。
ソリューションをビルドすると、「'{0}' は {1} のメンバーではありません」というエラー BC30456 が表示されます。エラーは、外部アセンブリへの参照をもう一度更新するまで、[エラー リスト] ビューと [出力] ウィンドウに表示されたままになります。その後、エラーはすぐに消えます。
プロジェクトから参照を完全に削除すると、VS は列挙型が見つからないというエラーを正しく表示し始め、インポートしようとしている名前空間が見つからないことを警告します。アセンブリ参照を再度追加すると、数秒後にすべてのエラーと警告が消えます。ソリューションや Web サイトを最初に再構築しようとすると、エラーが再び発生します。
これらのタスクを実行して、私が狂っていないことを確認しようとしました:
- Framework の 32 ビット バージョンと 64 ビット バージョンの両方で、Web サイトの一時 ASP.NET ファイル フォルダーを消去する
- アセンブリを外部の場所から直接 Bin フォルダーに手動でコピーする
- Visual Studio を閉じて再度開く
- コンピュータの再起動
私が今気づいたことの 1 つは、外部 DLL が 2011 年 11 月 14 日に最後にビルドされたことです。そのバージョンの DLL が Bin フォルダーにある場合、Intellisense は正確です。ビルドを試みるとすぐに、DLL と PDB が 2011 年 11 月 7 日のビルドに戻ります。これがどこから来ているのかわかりません。このマシン上のその DLL の DEBUG ビルドと RELEASE ビルドの両方が 11/14 用です。DLL はソース管理システムにチェックインされず、.refresh ファイルのみがチェックインされるため、ソース管理サーバーから更新することはできません。
私は本当に、本当に、困惑しており、あなたが持っているかもしれないアイデアを探しています.