web-dev-qa-db-ja.com

このファイルのデザイナーは表示できませんでした。ファイル内のどのクラスも設計できないためです。

次の共有コンポーネントがあります。

public class OurServiceBase : System.ServiceProcess.ServiceBase

このクラスには、標準化された実行スケジューリングおよびロギング機能など、すべてのダウンストリームサービスで必要な機能があります。

新しいプロジェクトでは、次を追加します。

public class MyService : System.ServiceProcess.ServiceBase

Windowsデザイナーでは、クラスは適切に表示されます。

OurServiceBaseから派生するようにサービスを変更すると

public class MyService : OurSharedLibrary.OurServiceBase

デザイナーは動作を停止します。

Error screenshot

完全なエラーは次のとおりです。このファイルのデザイナーは表示できませんでした。ファイル内のどのクラスも設計できないためです。デザイナーはファイル内の次のクラスを検査しました。EmailProcessor ---基本クラス「OurSharedLibrary.CienaServiceBase」をロードできませんでした。アセンブリが参照され、すべてのプロジェクトがビルドされていることを確認してください。

適切なアセンブリが参照され、プロジェクトがビルドされます。私のサービスは最終的に設計可能なクラスから派生するため、なぜデザイナーがこれをひっくり返すのか理解できません。

どんな提案でも大歓迎です。

もう少し情報-派生サービスを設計できないというエラーを表示するときのデザイナーからの呼び出しスタック:

at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost Host) 

7/19/2011 2:34 PM EDT新しい発見。

クラス "OurServiceBase"は別のプロジェクトに存在します(通常はDLLのみ)として参照されます。気まぐれに、基本クラスファイルをプロジェクトにコピーし、ビルドして、デザイナーを開きました。 !ベースクラスファイルを再度削除し、外部DLL参照に戻ると、デザイナーは再び壊れました。

34
The Evil Greebo

最善の策は、機能なしのOurServiceBaseのバージョンから開始し、MyServiceを設計できるかどうかを確認することです。その場合、機能が壊れるまでゆっくりと機能を追加し直します。

Visual StudioはOurServiceBaseのメンバーの1つをシリアル化する際に問題が発生しているようです。

6
CodeNaked

これを試すこともできます:

  • すべてのUIデザインページを閉じます
  • クリーンソリューション
  • ビルドソリューション
  • 目的のUIデザインページを開きます

これは役立つかもしれませんが、私のプロジェクトの同じ問題を確実に解決しました。

64
user2327795

私のような人がVisual Studio 2008の古いプロジェクトベースで作業し、同じ問題に直面しなければならない場合に備えて。

これはおそらく、プロジェクトパスにC#

例、私のパスは次のようになります:

C:\ projects\C#\ projectname ...

名前が変更されたとき

C:\ projects\CSharp\projectname ...

Visual Studioは、親クラスを認識し、継承されたフォームでフォームを開くことができるようになりました。

4
Yanik Lupien

別の可能な解決策は次のとおりです。

ビルド中のプロジェクトプロパティの下で、プラットフォームターゲットはx64に設定されました。これを「任意のCPU」に更新し、プロジェクトを再構築したところ、デザイナーは問題なく開きました。

これにより、より適切に説明されます。 x64のVisual Studioデザイナーは機能しません

3
Ausibanez

コントロール/サービスがジェネリッククラスを継承している場合にも、この問題が発生する可能性があります。設計者は、抽象クラスをインスタンス化する必要があるため、階層内の抽象クラスとうまく連携しません。

2
thomas88wp

2つのプロジェクト(一方が他方を参照)を使用したソリューションがあり、一方を.Net 4.5.2をターゲットに設定し、もう一方を4.5をターゲットにしていました。

ヒント:警告を表示エラーリストのメッセージ:

ビルド中のプロジェクトのプロセッサアーキテクチャ「MSIL」と参照「C:.... dll」、「x86」のプロセッサアーキテクチャとの間に不一致がありました。この不一致により、実行時エラーが発生する場合があります。 Configuration Managerを使用してプロジェクトのターゲットプロセッサアーキテクチャを変更し、プロジェクトと参照の間でプロセッサアーキテクチャを調整するか、プロジェクトのターゲットプロセッサアーキテクチャに一致するプロセッサアーキテクチャで参照に依存するようにしてください。

1
Jeremy Thompson