どのようにすべてのデザイナーのためのSilverlightのデザインタイムを記述する:Visual Studio 2008で、2ブレンド、3ブレンド、およびVisual Studio 2010
導入
これは、変化の実装設計時に一部のシリーズがSilverlight Toolkitの3 2009リリース。 このポストはデザイナー拡張フレームワークの最新の変更のSilverlight 3/Blend 3/Visualスタジオ2010年に導入さに着目し、どのようにSilverlightの設計時間をすべてのデザイナー:Visual Studioの2008/Blend 2、およびVisual Studio 2010/Blend 3をサポートする開発する。
Visual Studio 2008のSilverlight 2のデザインタイムと2をブレンド
Visual Studioをブレンド同じデザイナー拡張フレームワーク、および。SilverlightはWPFの使用、それを両方とWPF デザイナの機能拡張は、MSDNの枠組みは、おそらく最高の拡張性のデザイナーを参照可能です。 12月2008リリースは、の Silverlightのツールキットに基づいているSilverlight 2の(別名SL2の)、およびVS9(別名2008のVisual Studioがデザイナサポートのために)とブレンド2。 それはどのようにSilverlightをVS9とブレンド2 2設計時の機能の開発に示すの良い実世界の例です。 私のブログの記事デザイン時の機能の実装はツールキットでSilverlightであり、説明の詳細はどのように完了したら、実装フレームワークの読者は、実装時の設計することができます使用して、独自の。
要約するには、一言で言えばVisual Studio 2008とブレンド2 Silverlight 2のデザイン時のフレームワーク:
- 掘削時は:デザイン時の機能拡張フレームワークアセンブリのセットを介して公開されて、特にMicrosoft.Windows.Design.dll、Microsoft.Windows.Design.Extensibility.dll、およびMicrosoft.Windows.Design.Interaction.dll。 まとめてこれらのアセンブリは、掘削時と呼ばれます。 彼らは、%DevEnvDirの%\ PublicAssemblies(C:\プログラムファイル\のMicrosoft Visual Studio 9.0の\ Common7 \ IDEの\ PublicAssemblies 32のOS、またはC:\プログラムファイル(x86)を\のMicrosoft Visual Studio 9.0の\ Common7 \ IDEの\ PublicAssembliesの下にインストールされて64ビットOS)がいる。 また、GACに、エドです。 ほとんどのデザイン時のプロジェクトを参照するこれらの掘削時のDLLが必要です。 Visual Studio 2008とBlend 2は使用は、バージョン3.5を掘削時。
- ネーミングコンベンション:Visual Studioとブレンド負荷設計時のアセンブリは、命名規則を使用して:コントロールのアセンブリファイル名で置き換えます、VSとBlendは名前Foo.Design.dll、Foo.VisualStudio.Design.dllにし、そのデザイン時のアセンブリを見つけるためにFoo.Expression.Design.dll、Foo.dllは、またはデザインのサブディレクトリと同じディレクトリにある。 BlendはFoo.Design.dllとFoo.Expression.Design.dllが読み込まれますが、Visual Studioは、Foo.Design.dllとFoo.VisualStudio.Design.dllをロードします。 だから、設計時間を置くことをお勧めです。Design.dll内のすべてのデザイナー間で共有、機能、およびVisual Studioと。VisualStudio.Design.dllでブレンド特定のデザイン時の機能を入れて。Expression.Design.dllはそれぞれ。
- エントリポイント:実装、Visual Studioまたはブレンドの負荷は、デザイン時のアセンブリは、そのクラスをすべて見つける反射を使用してそれがIRegisterMetadataをし、メソッドを呼び出す唯一の登録を。 Silverlightをツールキット2008年12月発売のポストがデザイン時実装のブログ、以前のフレームワークを詳細にデザイン時Silverlightのツールキットの機能の実装 。
Silverlight 2でSilverlight.Controls.Design.slnのスクリーンショットは、ツールキットのソース内の以下の2009年3月発売は、前述の2 VS9とブレンドの説明実施をSL2のデザイン時の:
何は、Silverlight 3では、変更3ブレンドおよびVisual Studio 2010
で述べたようにWPFのデザイナ機能拡張アーキテクチャ MSDNの:
WPFデザイナは、フル機能拡張フレームワークをサポートします。 Expression Blendは専用のプロパティエディタは、メタデータの読み込み、およびライセンスをサポートします。 ブレンドは、メニューのアクションとadornersをサポートしていません。
Blend 2はSilverlightのデザイン時の限定的なサポートの上もしなかったが、Visual Studio 2008が(Silverlightの設計時にはほとんどサポートしているだけで、アイコン、ToolboxBrowsableAttributeのようないくつかの属性のメタデータ読み込んでいます):それは、デザイナー以上のビューアです。 Silverlightのデザイン時のサポート、ブレンド3およびVisual Studio 2010(別名VS10)のWPFのパリティを持つために、デザイナの機能拡張フレームワーク(すなわち、掘削時に変更を壊す導入する)は、特に:
- 掘削時には:デザイナー拡張フレームワークAPIのほとんどが、同じように滞在する物理的なパッケージの変更:Microsoft.Windows.Design.dllはなくなっており、4.0から3.5のすべての掘削時のアセンブリの変更のバージョンです。 Visual Studioの前に2010年にベータ、唯一の方法は、新しい掘削時を得るためにブレンド3プレビューを介しており、そのバージョンが3.7 4.0の代わりに、今のところ:
- エントリポイント:の代わりにを反映IRegisterMetadataの実装では、ブレンド3およびVisual Studio 2010を使用新しいアセンブリ属性ProvideMetadataAttributeとmetadataProviderTypeはIProvideAttributeTable実装する必要が:

- 命名規則は:掘削時のバージョンとのエントリポイントのような最新の変更のため、既存のデザイン時のアセンブリは3.5掘削時に対して開発ブレンド3およびVisual Studio 2010 loadしないでしょう、ブレンド3との新しい4.0掘削時に対して、新しい設計時間を記述する必要がのVisual Studioの2010。 これはブレンドのための[OK]を(場合にのみSilverlightを3とブレンド2 Silverlightは2)、これはVisual Studioの課題を作成するとブレンド3を使用することができますので、あなたは、Silverlight 3開発だけでなく、Visual StudioのVisual Studio 2008を使用できるためですが、 2010 Silverlight 2の開発のための。
以下の表は、すべてのシナリオを支持し、そのMWDのバージョンは、デザイン時のアセンブリを読み込むために使用されて表示されます:
| SLの\デザイナ | VS9 | VS10 | Blend2 | Blend3 |
| SL2の | MWD3.5 | MWD4.0 | MWD3.5 | |
| SL3 | MWD3.5 | MWD4.0 | MWD4.0 |
我々があるので我々は、2つの互換性MWDsに対して1つのデザイン時のアセンブリをビルドできない場合は、2つの別々のデザイン時のアセンブリを1つずつ、掘削時に対して作成します。 デザイン時のアセンブリは、名前によって読み込まれており、我々は同じ場所に同じ名前の2 assembliesすることはできません、デザイン時のアセンブリの読み込みののメカニズム(すなわち、名前付け規則)changeしている、same複数のバージョンをallowにsoデザイン時のアセンブリの共存。
新しい命名規則のためのブレンド3およびVisual Studio 2010 RTM版が出てくるのを待っている間、我々は両方のVS9とVS10をサポートするために何かを巧妙な行うことができます。 現在の命名規則を覚えてVisual Studioとのブレンドは、それぞれ2つのデザインのアセンブリを読み込むことができます:
| DLLを\デザイナ | Visual Studioで | ブレンド |
| Foo.Design.dll | Xの | Xの |
| Foo.VisualStudio.Design.dll | Xの | |
| Foo.Expression.Design.dll | Xの |
我々はMWDの異なるバージョンに対して2つのアセンブリをビルドできるように:
- それは両方のVS10とブレンド3で読み込むことができるようにSilverlightの3については、我々が共有した。Design.dllは掘削時4.0に対してビルドすることができます。 我々は、掘削時3.5に対してビルドします。VisualStudio.Design.dllを持って、すべてから。Design.dllので、VS9で読み込むことができます共有重複しています そこが1つのマイナーな問題は、です:私たちは、ますます混んでVisual Studioののツールfrom some controlsを隠すto ToolboxBrowsableAttribute(false)を使うといったVS10は読み込むことができませんsince placeをVS10のVisual Studioの特定のデザイン時の機能を配置する必要はありません。VisualStudio.Design.dllは掘削時3.5に対してビルドします。 これは、新しい命名規則度のVisual Studio 2010 RTM版以降で解決されます。
| DLLを\デザイナを掘削時\ | 掘削時 | VS9 | VS10 | Blend3 |
| Foo.Design.dll | 4.0 | Xの | Xの | |
| Foo.VisualStudio.Design.dll | 3.5 | Xの | ? | |
| Foo.Expression.Design.dll | 4.0 | Xの |
- 同じアプローチを次のSilverlight 2のは、:共有している。Design.dllを掘削時4.0に対してビルドが、両方を持つ。VisualStudio.Design.dllと。Expression.Design.dll掘削時3.5に対してビルドして、共有すべてを複製します。Design.dll 。 この方法では、両方のVS9とBlend 2はうまく機能しますが、同じ問題ではない場所VS10は、Visual Studio固有の機能を入れることです。 繰り返しますが、VS10の新しい命名規則で解決されます。
| DLLを\デザイナを掘削時\ | 掘削時 | VS9 | VS10 | Blend2 |
| Foo.Design.dll | 4.0 | Xの | Xの | |
| Foo.VisualStudio.Design.dll | 3.5 | Xの | ? | |
| Foo.Expression.Design.dll | 3.5 | Xの |
Silverlightのデザイン時の機能の実装3キット
掘削時
3キットでSilverlightのデザインプロジェクトは3月2009リリース3ブレンドとして続いて同様のVisual Studio 2008およびVisual Studio 2010、上記の方式を両方をサポート。
ダウンロード3月2009リリース、解凍負荷Silverlight.Controls.Design.slnにVisual Studio 2008でソースコードです。 例として、単純なControl.Input.Designプロジェクトを使用して:
- VS9/Blend3必要への参照を新しい4.0掘削時のためにデザインプロジェクト。 ここでは、中古イベントを構築CopySystemWindows.batを呼び出すためにブレンド3検索し、バイナリのディレクトリに2つの掘削時のDLLをコピーして使用します。
- ごCopySystemWindows.batに若干の変更をファイルに注意:我々は""(黄色の線)はソースコードがに解凍されたディレクトリへのパスにスペースがある場合を処理するために%のTHIS_DIRの%\バイナリ\のBlend3を引用する必要があります。
あなたはしない脆弱CopySystemWindows.batファイルのような、またはビルドイベントを使用している場合は、以下のように、Visual Studioはどこで新しい掘削時は、見つけるのに役立つリファレンスパスを設定できます。 唯一の警告は、あなたが必要と%(x86)を%は、両方のx86およびx64上のマシンを構築するために%とに%programfiles programfiles指定が。
参照パスの設定は。csproj.userファイルに永続化さ:
<プロジェクトのxmlns =" http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<ReferencePath>はc:\プログラムは3プレビュー\ブレンドマイクロソフト式\の\ Filesと、c:\プログラムファイル(x86)を\ Microsoftの表現\ 3プレビュー\ </ ReferencePath>ブレンド
<は/>をPropertyGroup
</プロジェクト>
Metadata.cs
私は使うのと同じ実装説明の枠組みを設計時機能の実装ツールキットでSilverlight 、変更いくつかのマイナー:
- 私はControls.Design.Commonフォルダから同じ名前のソリューションフォルダの下に、共有ファイルのExtensions.csとMetadataBase.csへのリンクを移動。
- 。デザインMetadata.csと。Expression.Designプロジェクトは、新しいエントリポイント:使用ProvideMetadataアセンブリ属性を使用してIProvideAttributeTableインターフェイスを実装。
- すべてがAddAttributes()メソッドは、。VisualStudio.Designプロジェクトに対応するに複製する必要があるメモを追加します。
。VisualStudio.Designはまだ掘削時3.5の古いIRegisterMetadataインターフェイスを使用しますが、プロジェクト:
- Controls.Designフォルダの下に対応するすべての*のMetadata.csファイルへのリンクはデザインプロジェクトです。
- AddAttributes()メソッドは。デザインプロジェクトAddAttributes()対応するメソッドの内容を複製します。
結論
掘削時の最新の変更内容は、いくつかの不便を引き起こす可能性がありますが、それは必要に応じて実装することですSilverlightのデザイン時の経験をWPFの豊富な。 このポストの方法と最新の変更を処理するためにも既存のすべての設計をサポートする:Visual Studio 2008で、ブレンド2、ブレンド3について説明します。 Visual Studio 2010としたら公開ですが、私は、新しい命名規則については、ブログされ、どのようにツールキットの設計時の作業のVisual Studio 2010インチ お楽しみに!
2009年12月5日:更新VS2010ベータ2の
両方のVisual Studio 2008/Blend2とVisual Studioの2010/Blend3、MWDs互換性のないバージョン(v3.5を対を使用支援の上記の問題を解決します。バージョン4.0)、デザイン時のアセンブリの命名規則は、VS2010 Beta2でから強化されてブレンド3:
アセンブリのランタイムアセンブリファイル名で置き換えます、共有デザイン時の名前はFoo.Design *. dllファイルは、Visual Studioの特定のデザイン時のアセンブリがdllの*.という名前Foo.VisualStudio.Designと、ブレンド、特定のデザイン時のアセンブリはFooの名前は。Expression.Designは*. dllを、ここで*名がファイルすることができますがゼロの文字の有効な以上。 ときStudioまたはブレンドビジュアルデザイナは、(のような)が読み込まれるアセンブリを、いくつかのfitの命名規則は、ゼロまたは1つしようとするに読み込む時間のデザイン:
- アセンブリ場合掘削時のタイムバージョンは、参照して設計バイパスしません読み込むと、アセンブリは、デザイン時の持つ別のメジャーバージョン番号よりも掘削時のデザイナー、バージョン。
- バージョン場合、複数のデザイン時の掘削時のデザイナーアセンブリが互換性のある、デザイナを読み込む1つのバージョン掘削時に、デザイナのコンパイルと等しいに対して最高またはそれ以上掘削時のバージョンです以下となります。
Silverlightは3 SDKの東ドイツ2 (また、インストールさVS2010自動的に) Silverlightを3キット2009年10月発売の VS2010を両方をサポートVS2008でおよび規則を使用して新しい名前付け。 たとえばSystem.Windows.Controls.dllに乗り、System.Windows.Controls.VisualStudio.Design.dllは掘削時3.5に対して構築され、古い命名規則を使用してVS2008で、使用される、新しいSystem.Windows.Controls.Toolkitします。 VisualStudio.Design.4.0.dll規約を掘削時建設に対する名前を新しい4.0が追加さ理解するためにVS2010、。をご参照くださいSilverlightのデザイン時アセンブリ情報の詳細。








最近のコメント