これは古い質問ですが、ここでも、より広いフォーラムプールでも、まだ答えがないようです。ほとんどのアドバイスは、絶え間なくクリーン>再構築または閉じる>クリーンフォルダー>マシンを再度開くか再起動することに関するものです。いくつかの調査を行い、共有するかもしれないと思っていましたが、現時点では確固たる答えはありません。要約すると、コントロールまたはフォームの設計時にすべてのデザイナーファイルがコピーされる場所、古いファイルが存在する可能性のある場所、およびデザイナーがエラーページを生成する前にすべてのデザイナー例外をキャッチする方法が説明されています。
アセンブリをロードできないか、見つからない場合が2つあるようです。1つは、ファイルが設計者が必要とする場所にコピーできないことが原因で発生し、2つ目は、古いファイルが残されていることが原因です。
上記のように、プロジェクトが、参照される参照とその参照に必要なすべての参照を再帰的にフレームワークまで直接参照できない場合、ファイルのコピーに失敗する可能性があります。これは、すべての参照とその依存関係を注意深く追跡し、すべてが考慮されていることを確認することで軽減できます。
Visual Studioデザイナーは、特定の場所を使用して、プロジェクトのソース/ binフォルダーから分離された、デザイナーで使用するdllをキャッシュします。
Windows XP:
C:\ Documents and Settings \ [user_name] \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 10.0 \ ProjectAssemblies
Windows 7:
C:\ Users \ [user_name] \ AppData \ Local \ Microsoft \ VisualStudio \ 10.0 \ ProjectAssemblies
この場所で、コンパイルされたアセンブリは、動的に作成されたフォルダーにコピーされます(アセンブリごとに1つのフォルダー)。この場所でアセンブリのバージョンの日付を確認すると、Visual Studioが終了すると削除され、かなり最新のようです。新しくコンパイルされたファイルでデザイナーを表示すると、すべてのアセンブリがコピーされます。各設計者のこの場所には、各アセンブリの新しいコピーが作成されるため、この場所には、各アセンブリの複数の同一のコピーが保持される場合があります。
ただし、アセンブリをコピーできる場所がもう1つあり、アセンブリ検索シーケンスの一部であり、明らかにProjectAssembliesフォルダーの前にあり、次の場所にあります。
C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE
アセンブリがこの場所にいつどのようにコピーされるかはわかりませんが、ここに到着するファイルがすぐに古い参照のソースになることはめったにありません。設計者が「ファイルまたはアセンブリのロードに失敗しました」エラーで失敗した場合、設計者が求めたバージョンは、この場所のアセンブリによってのみ参照されたバージョンでした。
これは、最初に2番目のVisual Studioインスタンスのデバッグを使用し、すべての.netシンボルが読み込まれ、すべての既知の例外が未処理の場合とは対照的にスロー時に中断することで発見されました。これにより、2番目のインスタンスが処理されたデザイナー例外をインターセプトし、そのファイルの場所を明らかにすることができました。これは、私が使用したデザイナーエラーの結果の出力でした。
=== Pre-bind state information ===
LOG: User = **************
LOG: DisplayName = ***********, Version=1.0.4275.22699, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/
LOG: Initial PrivatePath = NULL
Calling assembly : ***********, Version=1.0.4275.22699, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: The same bind was seen before, and was failed with hr = 0x80070002.