Silverlightのデザイン時のアセンブリ
導入
あなたは、Silverlightコントロールを記述する場合、あなたのコントロールのための時間アセンブリ設計を書くことを考える必要がありますも、2つの単純な理由のために:
- 開発者の生産性:Visual StudioまたはブレンドのようなツールなしでSilverlightの開発を想像しよう! カスタムコントロールの場合は、多くのVisual Studioでコントロールまたは自分自身をブレンドの設計時の経験を提供する必要があります。
- デザイナーは:XAMLとツールのブレンドのような開発者とデザイナーが一緒に仕事ができます。 Silverlightのコントロールの重要な設計基準は確かにデザイナーは、コードの1行を記述することなくそれらを使用することができますすることです。
デザイン時の経験は、通常(しかし、限定されない含まれています)に、次の:
- メタデータのプロパティ]ウィンドウのカテゴリのように、infotip、カスタムプロパティ/バインディング/コレクションエディタ等
- メタデータデザイン面、初期のように、adorner、コンテキストメニュー、アダプタなど
- アイコンのようなツールの統合は、コントロール登録
- コードのインテリセンスは、エディタ
(以外はインテリセンスを参照してください。 コントロールのSilverlightの追加リッチインテリセンスを )とコントロールの登録(参照してくださいStudioとブレンド視覚登録のSilverlightコントロールをと )、経験上、デザイン時のアセンブリされる時間のデザイン通常配信で。 以下は、私は、複雑性と柔軟性で、デザイン時の体験を提供する様々なアプローチを説明します徐々に導入するデザイン時のアセンブリの名前付け規則の一部を。
ランタイムアセンブリのみ
最も簡単な方法は、経験を時間に配信デザインのように、あまりにも意味のある実行時ですにパッケージデザイン時のコードをにランタイムメタデータは、アセンブリ、特にデザイン時のTypeConverterAttribute 。
長所とこのアプローチの短所:
- プロ:単純な
- 個別のデザイン時のアセンブリ、シンプルなセットアップ
- デザイン時の属性は、直接のランタイムコードに維持するために簡単に指定されて
- コン:ランタイムとデザイン時コードの密結合
- 実行時に無駄なデザイン時のコードのためにperf分解
- MWDsおよびその他の対は、/ブレンドアセンブリ)ランタイムに不必要に巻き込まれるようなデザイン時の依存関係(
- 時間独立ランタイムやデザインサービスを提供することはできません
- )の両方VS2008/Blend2とVS2010/Blend3ように複数のデザイナー(サポートしていないことができます
デザイン時のアセンブリが実際にされるため短所は、特にSilverlightの悪いです。NETアセンブリは、Silverlight型への参照です。 混合Silverlightと。は、NETアセンブリに挑戦することができます混乱し、微妙なバグにつながる可能性があります。 主に、Webアプリケーションまた、Silverlightアプリケーションはいるので、特に重要なサイズとパフォーマンスをダウンロードします。 にドラッグ。Silverlightアプリケーションで。NETアセンブリを確実に解決しない。 したがって、このアプローチは非常に推奨され、そこに強力な正当化されない限り。
共有デザイン時アセンブリ
革命的な一歩をデザインタイムとランタイムコード、リリースを分離し、別のアセンブリとそれらのサービスを提供ですので。 これは、可能性のすべての種類を開きます。 もちろん、我々は、ランタイムのアセンブリへの分解を不要な依存関係やパフォーマーを導入せずに道をそれに対応するランタイムのアセンブリへのデザイン時にアセンブリをリンクする必要があります。 したがって、命名規則は:プロジェクト、ランタイムアセンブリのSilverlight in Foo.dllは参照される、Studioとブレンドビジュアルデザイナは、( のような)が表示されます 、別の経由で情報などのアイコン時間のデザイン(読み込む最初の試みに命名規則方法ツールをする追加アイコンのコントロールのためのあなたのSilverlight )と設計時のメタデータ(インターフェイスを介して、のようなIRegisterMetadata Blend3のVS2008でとBlend2、またはとIProvideAttributeTableのVS2010。は、参照してくださいどのように時間を書くSilverlightのデザインデザイナーのためのすべて:Visual Studio 2008の、ブレンド2;ブレンド3、とはVisual Studio 2010 ) アセンブリからランタイム、それはファイル名で置き換えますが、ディレクトリFoo.Design.dllで同じ名前のアセンブリによって時間のデザインを見して、もしfooが見つかりましたからの情報を時間の設計しようとする読み込まれますデザイナが。Design.dll同様。
デザイナ特定のデザイン時のアセンブリ
ブレンドはほとんどデザイナーのための中にVisual Studioには主に開発者のために、されるので、彼らは、デザイン時の経験を別の要件があります。 1つの共有デザイン時にアセンブリ内のすべてのデザイン時のコードを置くデザイナーの間で密結合を紹介します。 だから命名規則が強化されます:ファイル名で置き換えます用のランタイムのアセンブリは、デザイナーの共有設計時アセンブリFoo.Design.dllすべてで読み込まれる、各デザイナーがFoo.VisualStudioれるように、アセンブリを読み込む独自のデザイン時のときも。 Design.dll Studioのビジュアル、およびブレンドのFoo.Expression.Design.dll。 デザイナー、特定のデザイン時のアセンブリは、アセンブリ時のデザインは読み込まにより共有。サードパーティのアセンブリを時間できるかを定義自分自身のデザイナー、特定の設計の設計者は、 Silverlightをツールキット2008年12月発売規則を名前付け使用して、この。 をご参照くださいでSilverlight Toolkitの機能をデザイン時とデザイン時の機能の実装ツールキットでSilverlightについての詳細。
デザインサブは、フォルダ
だから、アセンブリのランタイムをサポートは、Visual Studioとブレンド、それぞれのか(のようなSilverlightのSDKにあるアセンブリを3つのデザイン時、およびパッケージは、同じディレクトリのSilverlightキット)は、通常のアセンブリが含まれていくつかのランタイム。 だからディレクトリを取得するビットが混雑。 マイナーな改良は、デザインのサブフォルダの下に、デザイン時のアセンブリを配置することです。 さらに強化された: 場合の規則は、設計者はなるブレンド)することができますか(のようなVisual Studioのしないというのは、アセンブリのディレクトリのランタイムと同じアセンブリをの時間を見つけるに対応する設計を見るために存在することがでて、デザインサブフォルダif名前だから。
MWDsのサポート複数のバージョン
デザイン時は、上に構築されてデザイナの機能拡張フレームワーク Microsoft.Windows.Design.Interaction.dll、およびMicrosoft.Windows.Design.Extensibility.dll DLLのようないくつかで構成されています。 我々は、通常それらMWDs総称として呼び出します。 人生はもっと面白くするためにも我々は拡張フレームワークへの変更を破る導入し、VS2008でとBlend2使用のように持ってはバージョン3.5、VS2010とBlend3使用を掘削時のバージョン4.0を掘削時、彼らは互換性がありません。 がある場合はそのランタイムアセンブリファイル名で置き換えますと、あなたのユーザーはそれに対してもVS2008でのVS2010で開発できるようにしたい場合は、デザイン時のアセンブリの2つのセットを:1セットv3.5をMWDs使用さに対してビルドを提供する必要があります別のセットバージョン4.0に対して構築VS2008で、によって掘削時とVS2010で使用される。 VS2010の1つに活用新機能をVS2010で公開されるいくつかの新しいコードがあるかもしれないが、デザイン時のアセンブリの2つのセットは、おそらく、共通のコードがたくさんある。 デザイン時のアセンブリは、名前で読み込まれているので、あなたが同じ名前を持つ2つのファイルができないので、命名規則が再び強化されて:
アセンブリのランタイムアセンブリファイル名で置き換えます、共有デザイン時の名前はFoo.Design *. dllファイルは、Visual Studioの特定のデザイン時のアセンブリがdllの*.という名前Foo.VisualStudio.Designと、ブレンド、特定のデザイン時のアセンブリはFooの名前は。Expression.Designは*. dllを、ここで*名がファイルすることができますがゼロの文字の有効な以上。 ときStudioまたはブレンドビジュアルデザイナは、(のように)読み込まれるアセンブリを、いくつかのフィット命名規則、1つまたは0とするロード時間のデザイン:
- アセンブリ場合掘削時のタイムバージョンは、参照して設計バイパスしません読み込むと、アセンブリは、デザイン時の持つ別のメジャーバージョン番号よりも掘削時のデザイナー、バージョン。
- バージョン場合、複数のデザイン時の掘削時のデザイナーアセンブリが互換性のある、デザイナを読み込む1つのバージョン掘削時に、デザイナのコンパイルと等しいに対して最高またはそれ以上掘削時のバージョンです以下となります。
Silverlightを3キット2009年10月発売は Blend3/VS2010の両方とVS2008でサポートするために使用してこの名前を大会。 をご参照くださいSilverlightのデザイン時間:キット2009年10月発売の更新 、 デザイナー全てのSilverlightのデザインタイムを書く方法:Visual Studio 2008で、2ブレンド、3ブレンド、およびVisual Studio 2010 、および拡張シリーズ- WPFの&Silverlightのデザインタイムコードの共有を-パートIの詳細情報です。
サポートの両方WPFとSilverlight
、あなたは一度に書き込むには、両方のWPFとSilverlightで実行しようとする誘惑に駆られることがありますさらに、WPFのための人生を複雑とSilverlightにように非常に似ています。 あなただけではありません。/あなたは独りではありません。/同じように感じている人は他にもいます。 ソースコードがあると共有する方法について多くの記事があります/またはSilverlightとWPF間でのバイナリ。 我々は、デザイン時のアセンブリのもそれをしたいのですが、つまり、両方のWPFとSilverlightコントロールのと同じデザイン時のアセンブリがあります。 1つのアプローチ。プラットフォームアセンブリ時のデザインはするようほとんどの依存、制限のプラットフォーム固有の(WPFまたはSilverlight)のコードの特定のプラットフォームや参考文献への小さなアセンブリSilverlightの3 SDKの東ドイツ2 (tooによってインストールVS2010自動的に)DataGridのアプローチを、この使用デザイナーが(そこSystem.Windows.Controls.Data.VisualStudio.Design.4.0.Silverlight.dll SDKディレクトリ)です。 をご参照ください拡張シリーズ- WPFの&Silverlightをデザインタイムコードの共有-パートIについての詳細。
最後の1勝
クラスまたはそのメンバと同じデザイン時のメタデータは、sharedデザイン時のassemblyは、/一般的な動作とし、必要な場合designer、特定のデザイン時のアセンブリは、それをオーバーライドするdefaultを指定できます複数のデザイン時にアセンブリ、中に複数回指定できます。 同じデザイン時のメタデータは、(可能assembly時間singleデザインのwithinもが指定複数timesを参照して実装in SilverlightをツールキットFeatureデザイン時の例、としてDescriptionAttribute propertyのclassまたはその、AddDescriptions byできるようにしましたAddAttributes and AddTables方法) 。 だから我々はメタデータ勝を知っている必要があります。 最後に、最も簡単で最もロジックは、デザイン1 勝。 これは主にではなく、常にtrueです。 時には結果非決定するときと同じデザイン時メタデータが複数回指定されていますが、異なる値を持つことができます。
フィードバック
デザイン時は簡単に聞こえますが、悪魔は細部に宿る! フィードバックは常に歓迎します。 してください私は何の問題はあなたにも、どのような要求/改善をしたいのですが実行お知らせは、両方の設計時間の経験とデザイナー拡張フレームワークです。 ありがとう!








最近のコメント