Accueil > Time Design , Silverlight > Comment écrire le temps de conception de Silverlight pour tous les concepteurs: Visual Studio 2008, Blend 2, Blend 3, et Visual Studio 2010

Comment écrire le temps de conception de Silverlight pour tous les concepteurs: Visual Studio 2008, Blend 2, Blend 3, et Visual Studio 2010

Présentation

Cela fait partie de la série sur les changements de conception du temps de mise en œuvre de Silverlight Toolkit Mars 2009 Communiqué . Ce poste se concentre sur les dernières modifications au cadre extensibilité du concepteur introduit dans Silverlight 3/Blend studio 3/Visual 2010, et comment développer des temps de conception de Silverlight pour soutenir tous les créateurs: Visual Studio 2008/Blend 2, et Visual Studio 2010/Blend 3.

Temps de conception Silverlight 2 pour Visual Studio 2008 et Blend 2

Visual Studio et Blend part le cadre même créateur d'extensibilité et de l'utiliser à la fois pour WPF et Silverlight. extensibilité du concepteur WPF sur MSDN est probablement la meilleure référence disponible pour l'infrastructure d'extensibilité concepteur. L' Décembre 2008 Communiqué de Silverlight Toolkit est basé sur Silverlight 2 (aka SL2), et a charge du concepteur pour Visual Studio 2008 (aka VS9) et Blend 2. Il est un exemple du monde réel dans une bonne démonstration de la façon de développer Silverlight 2 dispose de temps de conception pour VS9 et Blend 2. Mon blog Conception Feature mise en œuvre dans Silverlight Toolkit temps explique en détail comment elle est faite, et les lecteurs peuvent utiliser le cadre de mise en œuvre dans leur mise en œuvre de conception propre temps.

Pour rappel, le cadre de Silverlight 2 temps de conception pour Visual Studio 2008 et Blend 2 en un mot:

  • MWD: l'infrastructure d'extensibilité temps de conception est exposée à travers un ensemble d'ensembles, notamment Microsoft.Windows.Design.dll, Microsoft.Windows.Design.Extensibility.dll et Microsoft.Windows.Design.Interaction.dll. Collectivement ces assemblées sont appelées MWD. Ils sont installés sous% DevEnvDir% \ PublicAssemblies (C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies en 32bit, ou C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies en 64bit OS). Ils sont également GAC-éd. La plupart des projets de conception du temps besoin de référencer ces DLL MWD. Visual Studio 2008 et la version Mélange utiliser 2 MWD 3.5.
    MWD in GAC
  • Naming Convention: Visual Studio et Blend assemblées charge de calcul du temps en utilisant une convention de nommage: pour le contrôle de l'assemblage Foo.dll, VS et Blend trouverez ses assemblées temps de conception avec le Foo.Design.dll nom, Foo.VisualStudio.Design.dll, et Foo.Expression.Design.dll, dans le même répertoire où se Foo.dll, ou le répertoire de conception des sous. Visual Studio se charge Foo.Design.dll et Foo.VisualStudio.Design.dll, tandis Mélange va charger Foo.Design.dll et Foo.Expression.Design.dll. Il est donc conseillé de mettre du temps des caractéristiques de conception partagée par toutes les designers. Design.dll, et mettre de Visual Studio et Blend fonctionnalités spécifiques moment du design dans. VisualStudio.Design.dll et. Expression.Design.dll respectivement.
  • Point d'entrée: lorsque Visual Studio ou charges Mélange d'une assemblée le temps de conception, il utilise la réflexion pour trouver toutes les classes qui implémentent IRegisterMetadata , et appelle sa méthode ne S'enregistrer . Silverlight Toolkit Décembre 2008 Communiqué de mise en œuvre a un cadre de conception détaillée du temps dans le blog précédent après le temps de conception La mise en œuvre dans Silverlight Toolkit Feature .

Voici les screenshots des Silverlight.Controls.Design.sln dans Silverlight Toolkit 2 source en Mars 2009 Communiqué de mise en œuvre démontre des temps de conception pour les SL2 VS9 et Blend 2 a discuté ci-dessus:
SL2 design projects

Ce qui a changé dans Silverlight 3, Blend 3 et Visual Studio 2010

Comme indiqué dans l'architecture extensibilité du concepteur WPF sur MSDN:

Le Concepteur WPF prend en charge l'infrastructure d'extensibilité complète. Expression Blend prend en charge les éditeurs de propriétés seulement, chargement des métadonnées, et les licences. Mélanger ne supporte pas les actions de menu et les ornements.

Blend 2 ci-dessus a un support limité pour le temps de conception Silverlight aussi, mais Visual Studio 2008 a peu de soutien pour les délais de conception de Silverlight (juste les icônes, le chargement des métadonnées pour quelques attributs comme ToolboxBrowsableAttribute): il est plus une visionneuse d'un designer. Pour avoir la parité WPF Silverlight pour le soutien de la conception, Blend 3 et Visual Studio 2010 (aka VS10) ont pour introduire des changements au cadre de briser l'extensibilité du concepteur (ie MWD), notamment:

  • MWD: la plupart du concepteur extensibilité cadre de l'API restent les mêmes, mais leurs changements de conditionnement physique: Microsoft.Windows.Design.dll est parti, et la version de tous les changements assemblées MWD de 3,5 à 4,0. Avant de Visual Studio 2010 Beta 1, la seule façon d'obtenir le MWD nouvelle est via Blend 3 Preview, et sa version est de 3,7 au lieu de 4,0 pour l'instant:
    MWD in Blend 3
  • Point d'entrée: au lieu de refléter les travers IRegisterMetadata implémentations, Blend 3 et Visual Studio 2010 utilise une nouvelle assemblée ProvideMetadataAttribute attribut, et le metadataProviderType doivent mettre en œuvre IProvideAttributeTable:
    ProvideMetadataAttribute
  • Naming Convention: en raison des changements de rupture comme la version MWD et point d'entrée, le temps de conception existants assemblages développés contre 3,5 MWD ne se charge pas dans Blend 3 et Visual Studio 2010, vous avez à écrire le temps de conception nouvelle contre le nouveau 4,0 MWD Blend 3 et Visual Studio 2010. Bien que ce soit OK pour Blend (puisque vous ne pouvez utiliser Blend 3 avec Silverlight 3 et Blend 2 avec Silverlight 2), cela crée un défi pour Visual Studio, puisque vous pouvez utiliser Visual Studio 2008 pour le développement de Silverlight 3, ainsi que Visual Studio 2010 pour le développement Silverlight 2.

Ci-dessous tableau répertorie tous les scénarios pris en charge et quelle version de DPM est utilisé pour charger les assemblées temps de conception:

SL \ Designer VS9 VS10 Blend2 Blend3
SL2 MWD3.5 MWD4.0 MWD3.5
SL3 MWD3.5 MWD4.0 MWD4.0

Nous ne pouvons pas construire un montage de temps de conception contre deux MWDs incompatibles, nous devons donc créer deux ensembles de temps de conception, les uns contre les MWD. Assemblées du temps de conception sont chargés par leur nom, et nous ne pouvons pas avoir deux assemblées avec le même nom au même endroit, donc le temps de conception de chargement ensemble du mécanisme (c'est à dire, la convention de nommage) doit changer, pour permettre de multiples versions de la même Assemblée temps de conception coexister.

En attendant la nouvelle convention de nommage pour sortir avec Blend 3 et Visual Studio 2010 RTM, nous pouvons faire quelque chose d'intelligent maintenant pour soutenir à la fois VS9 et VS10. Rappelez convention de nommage actuelle permet de Visual Studio et Blend chacun à la charge deux assemblées de conception:

DLL \ Designer Visual Studio Blend
Foo.Design.dll X X
Foo.VisualStudio.Design.dll X
Foo.Expression.Design.dll X

afin que nous puissions construire les deux assemblées contre les différentes versions de MWD:

  • Pour Silverlight 3, nous pouvons avoir la commune. Design.dll construire contre 4,0 MWD, donc il peut être chargé à la fois par VS10 et Blend 3. Nous avons alors. VisualStudio.Design.dll construire contre 3,5 MWD et dupliquer tout, de partager. Design.dll, donc il peut être chargé par VS9. Il ya un problème mineur si: nous n'avons pas un endroit pour mettre Visual Studio fonctionnalités spécifiques de temps de conception pour VS10, comme l'utilisation ToolboxBrowsableAttribute (faux) pour masquer certains contrôles de la boîte à outils de Visual studio plus en plus encombré, puisque VS10 peut pas charger le . VisualStudio.Design.dll construire contre 3,5 MWD. Ce sera résolu avec la nouvelle convention de dénomination fois Visual Studio 2010 RTM.
DLL \ MWD \ Designer MWD VS9 VS10 Blend3
Foo.Design.dll 4,0 X X
Foo.VisualStudio.Design.dll 3.5 X ?
Foo.Expression.Design.dll 4,0 X
  • Pour Silverlight 2, suivez la même démarche: le partage Design.dll construire contre 4,0 MWD, mais ont tous deux VisualStudio.Design.dll et Expression.Design.dll construire contre 3,5 MWD et dupliquer tout partagé Design.dll.... . De cette façon, les deux VS9 et Blend 2 fonctionnent très bien, mais avec la même question qu'il n'y ait pas de place pour mettre fonctionnalités de Visual Studio spécifique pour VS10. Encore une fois, qui sera résolu avec la nouvelle convention de dénomination dans le VS10.
DLL \ MWD \ Designer MWD VS9 VS10 Blend2
Foo.Design.dll 4,0 X X
Foo.VisualStudio.Design.dll 3.5 X ?
Foo.Expression.Design.dll 3.5 X


Mise en œuvre Feature Time Design dans Silverlight 3 Toolkit

MWD

Les projets de conception dans Silverlight 3 Toolkit en Mars 2009 Communiqué de suivi ci-dessus mentionnés dispositif pour soutenir à la fois Visual Studio 2008 et Visual Studio 2010, ainsi que Blend 3.

Téléchargez le Communiqué de Mars 2009 , décompressez le code source, la charge Silverlight.Controls.Design.sln dans Visual Studio 2008. Utilisez le projet de simples Control.Input.Design comme exemple:

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

  • Des projets de conception pour VS9/Blend3 besoin de faire référence au nouveau 4,0 MWD. Ici, nous utilisons l'événement pré-construction à invoquer CopySystemWindows.bat pour localiser Blend 3 et copiez les deux DLL dans le répertoire de MWD Binaries.
  • S'il vous plaît noter les changements mineurs au dossier CopySystemWindows.bat: nous avons besoin de citer "% THIS_DIR% \ Binaries \ Blend3" (lignes en jaune) pour traiter les cas où il ya un espace dans le chemin vers le répertoire du code source est décompressé.

Si vous n'aimez pas le fichier CopySystemWindows.bat fragiles ou en utilisant des événements de construction, vous pouvez définir les chemins de référence pour aider à Visual Studio trouver où le MWD nouvelle est, comme indiqué ci-dessous. Le seul inconvénient est que vous devez spécifier deux programfiles% programfiles% et% (x86)% pour le construire sur les deux machines x86 et x64.

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

Le paramètre de référence chemins sont conservées dans le fichier csproj.user.:

<Projet xmlns = " http://schemas.microsoft.com/developer/msbuild/2003 " >
<PropertyGroup>
<ReferencePath> C: \ Program Files \ Microsoft Expression \ Blend 3 Preview \ c: \ Program Files (x86) \ Microsoft Expression \ Blend 3 Preview \ </ ReferencePath>
</ PropertyGroup>
</ Project>

Metadata.cs

J'utilise le cadre de mise en œuvre même que celle décrite dans la mise en œuvre Feature Time Design dans Silverlight Toolkit , avec quelques changements mineurs:

Metadata.cs in Silverlight 3 Toolkit Source

  • J'ai déménagé liens vers partagé Extensions.cs fichiers et MetadataBase.cs du dossier Controls.Design.Common en vertu d'un dossier de la solution avec le même nom;
  • .. Metadata.cs en Design et projets d'Expression.Design utiliser le nouveau point d'entrée: utilisation ProvideMetadata Assemblée attribut, et mettre en œuvre l'interface IProvideAttributeTable;
  • Ajouter noter que tout dans AddAttributes () la méthode doit être dupliqué dans correspondante. VisualStudio.Design projet.

. Les projets VisualStudio.Design toujours utiliser l'ancienne interface IRegisterMetadata au MWD 3.5, mais:
image

  • sous le dossier Controls.Design sont des liens vers tous les fichiers Metadata.cs * dans le projet de conception correspondants.;
  • AddAttributes () duplique le contenu de la méthode AddAttributes () dans correspondante. Conception du projet.

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

Conclusion

Alors que les changements importants apportés à MWD peut causer quelques désagréments, il est nécessaire de mettre en œuvre aussi riche d'une expérience de temps de conception pour Silverlight comme pour WPF. Ce post décrit une façon de gérer les changements de rupture et toujours soutenir tous les créateurs actuels: Visual Studio 2008, Blend 2, et Blend 3. Une fois que Visual Studio 2010 est disponible publiquement, je blogue sur la nouvelle convention de dénomination, et comment le travail Toolkit moment du design dans Visual Studio 2010. Restez à l'écoute!

05/12/2009: Mise à jour pour VS2010 Beta2

Pour résoudre dessus de problème de soutenir à la fois Visual Studio et Visual Studio 2008/Blend2 2010/Blend3, qui utilisent des versions incompatibles de MWDs (v3.5 vs. V4.0), la convention de nommage pour les assemblages de temps de conception est renforcée par VS2010 beta2 et Blend 3:

d'un assembly de runtime Foo.dll, l'assemblée de conception partagée du temps est nommé Foo.Design *. dll, le Visual Studio de montage spécifiques du temps de conception est nommé Foo.VisualStudio.Design *. dll, et le mélange de montage spécifique du temps de conception est nommé Foo . Expression.Design *. dll, où * peut être zéro ou plusieurs caractères valides pour les noms de fichier. Quand un designer (comme Visual Studio ou Blend) essaie de charger un assemblage de plusieurs temps de conception et s'adapter à la convention de nommage, zéro ou un sera chargé:

  • Si la version MWD référencés par l'assembly moment de la conception a un numéro de version majeure différente que la version MWD du concepteur, puis l'assemblage de conception ne se charge pas et est contourné.
  • Si plus d'un dessin-temps de montage est compatible avec la version MWD le concepteur, le concepteur charge la compilé avec la plus haute version MWD qui est inférieur ou égal à la version MWD du concepteur.

Silverlight 3 SDK RDA 2 (également installé par VS2010 automatiquement) et Silverlight Toolkit 3 Octobre 2009 Communiqué de l'utilisation de la nouvelle convention de dénomination pour soutenir les VS2008 et VS2010. Prenez System.Windows.Controls.dll par exemple, System.Windows.Controls.VisualStudio.Design.dll est construit contre 3,5 MWD et est utilisé par VS2008, qui utilise l'ancienne convention de nommage, un System.Windows.Controls.Toolkit nouvelle. VisualStudio.Design.4.0.dll construit contre 4,0 MWD est ajouté pour VS2010, qui comprend la nouvelle convention de dénomination. S'il vous plaît voir Assemblées Silverlight moment du design pour plus d'informations.

Share and Enjoy:

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