• 締切済み

C# 「データが失なわれる可能性を防ぐため、…」

Visual Studio 2008 C# での質問です。 プログラムを作りこんでいくうちに、ソリューション・エクスプローラからデザイナの表示をクリックすると、 「データが失なわれる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。」 「ファイル内にデザインできるクラスがないため、このファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイナで見つかりました。CRsvCalForm --- 基本クラス 'foo.Common.AbstructFooForm' を読み込めませんでした。アセンブリが参照されているか、およびすべてのプロジェクトがビルドされているかを確認してください。」 と表示されます。 修正したコードのフォームだけでなく、今まで手をつけていないフォームも表示できなくなりました。 SVN から(修正前の)「CRsvCalForm.cs」「CRsvCalForm.design.cs」「CRsvCalForm.resx」をエクスポートして Visual Studio を立ち上げても一緒の現象です。 SVN を直接 Visual Studio で開くと、正常に動いています。 「データが失なわれる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります」でぐぐって見たのですが、有効そうなページは見つかりませんでした。 どなたか解決方法を知ってみえる方、ご教示いただきますようお願いします。

みんなの回答

noname#251971
noname#251971
回答No.1

エラーメッセージに出てくるクラスの名称から察するに、 抽象クラス(abstractなクラス、もしくはabstractなメソッドを持つクラス) を基本クラスに指定しているでしょうか。 残念ながら、デザイナは抽象基本クラスをサポートしません。 デザイナは実際に基本クラスのインスタンスを生成して動作するらしく、 基本クラスのインスタンスが生成できない場合には利用できません。 また、インスタンスの生成には、以前にビルドした時のアセンブリを読み込み行うようですので、 関連するファイルを置き換えて戻すだけでは問題は解消しません。 この場合ですと、基本クラスがインスタンス化可能な状態のコードでビルドをし直す必要があります。 抽象基本クラスを利用したい場合はたびたびあるとは思いますが、 デザイナの使用をあきらめるか、抽象クラスをあきらめるかのいずれかを選択するしかありません。 自分はだいたい、基本クラス側実装は例外をthrowするだけのvirtualメソッド/プロパティとして実装して妥協しています。

aztek
質問者

お礼

ご返答ありがとうございます。 そうです、Abstruct なクラスです。 エラーを全部潰したらデザイナ表示ができるようになりました。 根本的な解決ではないですが、今後なんとかしていきます。

関連するQ&A