アーカイブ

アーカイブ2009年3月の

どのようにデザイナーのすべてのデザイン時のために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を掘削時。
    MWD in GAC
  • ネーミングコンベンション: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を、とメソッドcalls、その唯一のRegisterを。 Silverlightをツールキット2008年12月発売はpostがデザイン時実装のブログのprevious frameworkをdetailedにデザインタイムSilverlightのツールキットの機能の実装

Silverlight 2でSilverlight.Controls.Design.slnのスクリーンショットは、ツールキットのソース内の以下の2009年3月発売は、前述の2 VS9とブレンドの説明実施をSL2のデザイン時の:
SL2 design projects

何は、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の代わりに、今のところ:
    MWD in Blend 3
  • エントリポイント:の代わりにを反映IRegisterMetadataの実装では、ブレンド3およびVisual Studio 2010を使用新しいアセンブリ属性ProvideMetadataAttributeとmetadataProviderTypeはIProvideAttributeTable実装する必要が:
    ProvideMetadataAttribute
  • 命名規則は:掘削時のバージョンとのエントリポイントのような最新の変更のために、既存のデザイン時のアセンブリは3.5掘削時に対して開発ブレンド3およびVisual Studio 2010が読み込まれません場合は、ブレンド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つのアセンブリを持つことができない、デザイン時のアセンブリの読み込み機構(すなわち、名前付け規則)を変更している、同一の複数のバージョンを許可する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のツールボックスからいくつかのコントロールを非表示にするToolboxBrowsableAttribute(false)を使用してのように、VS10は読み込むことができないので、場所を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プロジェクトを使用して:

Controls.Input.Design.csproj in Silverlight 3 Toolkit Source

  • VS9/Blend3必要への参照を新しい4.0掘削時のためにデザインプロジェクト。 ここでは、中古イベントを構築CopySystemWindows.batを呼び出すためにブレンド3検索し、バイナリのディレクトリに2つの掘削時のDLLをコピーして使用します。
  • ごCopySystemWindows.batに若干の変更をファイルに注意:我々は""(黄色の線)はソースコードがに解凍されたディレクトリへのパスにスペースがある場合を処理するために%のTHIS_DIRの%\バイナリ\のBlend3を引用する必要があります。

あなたはしない脆弱CopySystemWindows.batファイルのような、またはビルドイベントを使用している場合は、以下のように、Visual Studioはどこで新しい掘削時は、見つけるのに役立つリファレンスパスを設定できます。 唯一の警告は、あなたが必要と%(x86)を%は、両方のx86およびx64上のマシンを構築するために%とに%programfiles programfiles指定が。

Controls.Input.Design.csproj in Silverlight 3 Toolkit Source

参照パスの設定は。csproj.userファイルに永続化さ:

<プロジェクトのxmlns =" http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<ReferencePath>はc:\プログラムは3プレビュー\ブレンドマイクロソフト式\の\ Filesと、c:\プログラムファイル(x86)を\ Microsoftの表現\ 3プレビュー\ </ ReferencePath>ブレンド
<は/>をPropertyGroup
</プロジェクト>

Metadata.cs

私は使うのと同じ実装説明の枠組みを設計時機能の実装ツールキットでSilverlight 、変更いくつかのマイナー:

Metadata.cs in Silverlight 3 Toolkit Source

  • 私はControls.Design.Commonフォルダから同じ名前のソリューションフォルダの下に、共有ファイルのExtensions.csとMetadataBase.csへのリンクを移動。
  • 。デザインMetadata.csと。Expression.Designプロジェクトは、新しいエントリポイント:使用ProvideMetadataアセンブリ属性を使用してIProvideAttributeTableインターフェイスを実装。
  • すべてがAddAttributes()メソッドは、。VisualStudio.Designプロジェクトに対応するに複製する必要があるメモを追加します。

。VisualStudio.Designはまだ掘削時3.5の古いIRegisterMetadataインターフェイスを使用しますが、プロジェクト:
image

  • Controls.Designフォルダの下に対応するすべての*のMetadata.csファイルへのリンクはデザインプロジェクトです。
  • AddAttributes()メソッドは。デザインプロジェクトAddAttributes()対応するメソッドの内容を複製します。

Controls.Input.Expression.Design.csproj in Silverlight 3 Toolkit Source

結論

掘削時の最新の変更内容は、いくつかの不便を引き起こす可能性がありますが、それは必要に応じて実装することです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またはブレンドビジュアルデザイナは、(のように)読み込まれるアセンブリを、いくつかのフィット命名規則、1つまたは0とするロード時間のデザイン:

  • アセンブリ場合掘削時のタイムバージョンは、参照して設計バイパスしません読み込むと、アセンブリは、デザイン時の持つ別のメジャーバージョン番号よりも掘削時のデザイナー、バージョン。
  • バージョン場合、複数のデザイン時の掘削時のデザイナーアセンブリが互換性のある、デザイナを読み込む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のデザイン時アセンブリ情報の詳細。

Technoratiのタグ:

共有し、楽しみなさい:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签