Inicio > tiempo de diseño , Silverlight > Cómo escribir tiempo de diseño de Silverlight para todos los diseñadores: Visual Studio 2008, Blend 2; Blend 3, y Visual Studio 2010

Cómo escribir Tiempo Silverlight Diseño para Todos Diseñadores: Visual Studio 2008, Blend 2; Blend 3, y Visual Studio 2010

Introducción

Esto es parte de la serie a tiempo los cambios de diseño en la aplicación Silverlight Toolkit versión marzo 2009 . Este artículo se centra en los cambios de última hora en el marco de diseño de extensibilidad introducido en Silverlight 3/Blend 3/Visual Studio 2010, y cómo desarrollar Silverlight en tiempo de diseño para apoyar a todos los diseñadores: Visual Studio 2008/Blend 2 y Visual Studio 2010/Blend 3.

Silverlight 2 tiempo de diseño de Visual Studio 2008 y Blend 2

Visual Studio y compartir Mezcla el marco de diseño de extensibilidad mismo, y lo utilizan tanto para WPF y Silverlight. extensibilidad Diseñador de WPF en MSDN es probablemente la mejor referencia disponible para el marco de extensibilidad de diseño. El 12 2008 de lanzamiento de Silverlight Toolkit está basado en Silverlight 2 (SL2 aka), y cuenta con el apoyo del diseñador de Visual Studio 2008 (aka VS9) y Blend 2. Es un buen ejemplo del mundo real para demostrar cómo desarrollar características de Silverlight 2 en tiempo de diseño para VS9 y Blend 2. Mi entrada en el blog en tiempo de diseño de funciones de aplicación de Silverlight Toolkit explica en detalle cómo se hace, y los lectores marco de aplicación se puede utilizar en su diseño la implementación en tiempo propio.

En resumen, el diseño de Silverlight 2 marco temporal para Visual Studio 2008 y Blend 2, en pocas palabras:

  • MWD: el tiempo de la elaboración del marco de extensibilidad se expone a través de una serie de asambleas, sobre todo Microsoft.Windows.Design.dll, Microsoft.Windows.Design.Extensibility.dll y Microsoft.Windows.Design.Interaction.dll. En conjunto estas asambleas se llaman MWD. Se instalan en%% DevEnvDir \ PublicAssemblies (C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies de 32 bits del sistema operativo, o C: \ Archivos de programa (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies en 64 bits OS). También son GAC-ed. La mayoría de los proyectos en tiempo de diseño, deberá hacer referencia los dlls MWD. Visual Studio 2008 y Blend 2 MWD utilizar la versión 3.5.
    MWD in GAC
  • Convención de nomenclatura: Visual Studio y Blend asambleas de diseño el tiempo de carga utilizando una convención de nomenclatura: para el control de montaje Foo.dll, VS y Blend encontrará sus asambleas en tiempo de diseño con el nombre Foo.Design.dll, Foo.VisualStudio.Design.dll, y Foo.Expression.Design.dll, en el mismo directorio donde se Foo.dll, o en el directorio de diseño sub. Visual Studio cargará Foo.Design.dll y Foo.VisualStudio.Design.dll, mientras Blend carga Foo.Design.dll y Foo.Expression.Design.dll. Por lo tanto, se aconseja poner el tiempo de diseño en todos los rasgos que comparten los diseñadores en. Design.dll, y puso de Visual Studio y Blend características específicas en tiempo de diseño. VisualStudio.Design.dll y. Expression.Design.dll respectivamente.
  • Punto de entrada: cuando Visual Studio o las cargas de mezcla de una asamblea en tiempo de diseño, que utiliza la reflexión para encontrar todas las clases que implementan IRegisterMetadata , y llama a su único método de registro . Silverlight Toolkit versión 12 2008 tiene un tiempo de diseño del marco de aplicación detallada en anteriores post de blog en tiempo de diseño Aplicación de funciones en el Instrumental de Silverlight .

Por debajo de capturas de pantalla de Silverlight.Controls.Design.sln en Silverlight Toolkit 2 fuente de marzo 2009 Lanzamiento demuestra la aplicación de tiempo de diseño para SL2 VS9 Blend 2 y discutidos anteriormente:
SL2 design projects

¿Qué cambió en Silverlight 3, Blend 3 y Visual Studio 2010

Como se indica en el Diseñador de Arquitectura de extensibilidad de WPF en MSDN:

El diseñador de WPF apoya el marco de extensibilidad completa. Expression Blend sólo es compatible con los editores de propiedades, la carga de metadatos, y las licencias. Mezcla no es compatible con las acciones del menú y adorners.

Blend 2 tiene por encima de un apoyo limitado tiempo de diseño de Silverlight también, pero Visual Studio 2008 tiene poco apoyo para el tiempo de diseño de Silverlight (sólo los iconos, la carga de los metadatos de los atributos de unos pocos como ToolboxBrowsableAttribute): es más un espectador que un diseñador. Para que la paridad para el apoyo de WPF Silverlight en tiempo de diseño, 3 Blend y Visual Studio 2010 (aka VS10) tendrán que introducir cambios importantes al marco de extensibilidad de diseño (es decir MWD), entre ellos:

  • MWD: la mayor parte del marco de diseño de la API de extensibilidad de la estancia del mismo, pero sus cambios de los paquetes física: Microsoft.Windows.Design.dll se ha ido, y la versión de todos los cambios asambleas MWD 3,5 a 4,0. Antes de Visual Studio 2010 Beta1, la única manera de obtener el nuevo es a través de MWD Blend 3 Preview, y su versión es de 3,7 en lugar del 4,0 por ahora:
    MWD in Blend 3
  • Punto de entrada: en vez de reflejar a través IRegisterMetadata implementaciones, 3 Blend y Visual Studio 2010 utiliza un nuevo conjunto de atributos ProvideMetadataAttribute, y debe implementar la metadataProviderType IProvideAttributeTable:
    ProvideMetadataAttribute
  • Convención de nomenclatura: debido a los cambios romper como la versión MWD y punto de entrada, existentes asambleas en tiempo de diseño desarrollados frente a los 3,5 MWD no se cargará en Blend 3 y Visual Studio 2010, usted tiene que escribir en tiempo de diseño nuevo contra el nuevo 4,0 MWD para Blend 3 y Visual Studio 2010. Si bien esto está bien para Mezcla (ya que sólo se puede usar Blend 3 con Silverlight 3 y 2 Mezcla con Silverlight 2), esto crea un desafío para Visual Studio, ya que se puede utilizar Visual Studio 2008 para el desarrollo de Silverlight 3, así como Visual Studio 2010 para el desarrollo de Silverlight 2.

siguiente tabla se enumeran todos los escenarios y apoyó la versión de MWD se utiliza para cargar ensamblados en tiempo de diseño:

SL \ Diseñador VS9 VS10 Blend2 Blend3
SL2 MWD3.5 MWD4.0 MWD3.5
SL3 MWD3.5 MWD4.0 MWD4.0

No podemos construir un conjunto de tiempo de diseño contra dos MWDs incompatibles, así que tenemos que crear dos asambleas separadas en tiempo de diseño, uno contra cada uno de MWD. Tiempo de diseño asambleas se cargan por su nombre, y no podemos tener dos conjuntos con el mismo nombre en el mismo lugar, por lo que el tiempo de diseño conjunto de mecanismo de carga (es decir, la convención de nombres) tiene que cambiar, para permitir que múltiples versiones de la misma tiempo de diseño de montaje coexistir.

A la espera de la nueva convención de nomenclatura de salir con Blend 3 y Visual Studio 2010 RTM, que podemos hacer algo inteligente ahora para apoyar tanto VS9 y VS10. Recuerde convención de nomenclatura actual permite a Visual Studio y Blend cada uno para cargar dos asambleas de diseño:

DLL \ Diseñador Visual Studio Mezcla
Foo.Design.dll X X
Foo.VisualStudio.Design.dll X
Foo.Expression.Design.dll X

para que podamos construir las dos asambleas en contra de diferentes versiones de MWD:

  • Para Silverlight 3, podemos tener la compartida. Design.dll construir contra la MWD 4,0, por lo que se puede cargar tanto por VS10 y Blend 3. Tenemos entonces. VisualStudio.Design.dll construir contra la MWD 3,5 y duplicados de todo, desde compartir. Design.dll, por lo que pueden ser cargados por VS9. Hay una cuestión de menor importancia sin embargo: no tenemos un lugar para poner Visual Studio especificidades tiempo de diseño para VS10, como el uso de ToolboxBrowsableAttribute (falso) para ocultar algunos controles de la caja de herramientas cada vez más poblado de Visual Studio, ya que VS10 no puede cargar el . VisualStudio.Design.dll construir contra la MWD 3,5. Esto será resuelto con la nueva convención de nomenclatura vez Visual Studio 2010 RTM.
DLL \ MWD \ Diseñador 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
  • Para Silverlight 2, siga el mismo enfoque: tienen la compartida. Design.dll construir contra la MWD 4,0, pero tener ambas cosas. VisualStudio.Design.dll y Expression.Design.dll. Construir contra la MWD 3,5 y duplicar todo en común. Design.dll . De esta manera, tanto VS9 Blend 2 y funcionará bien, pero con el mismo problema que no hay lugar para poner Visual Studio características específicas para VS10. Una vez más, que se resolverá con la convención de nombres nuevos en el VS10.
DLL \ MWD \ Diseñador 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


Tiempo de diseño de funciones de aplicación de Silverlight Toolkit 3

MWD

Los proyectos de diseño en Silverlight Toolkit 3 en marzo 2009 Lanzamiento seguido mencionado régimen para apoyar tanto a Visual Studio 2008 y Visual Studio 2010, así como Blend 3.

Descargue la versión 03 2009 , descomprimir el código fuente, la carga Silverlight.Controls.Design.sln en Visual Studio 2008. Utilice el simple proyecto Control.Input.Design como ejemplo:

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

  • Proyectos de diseño para las necesidades VS9/Blend3 para hacer referencia a los nuevos 4,0 MWD. Aquí usamos pre-build caso de invocar CopySystemWindows.bat para localizar Blend 3 y copiar los dos dlls MWD al directorio de archivos de código binario.
  • Tenga en cuenta los cambios de menor importancia CopySystemWindows.bat archivo: tenemos que citar "THIS_DIR%% \ Binaries \ Blend3" (líneas de color amarillo) para manejar los casos en que hay un espacio en la ruta de acceso al directorio se descomprime el código fuente de.

Si no te gusta el frágil CopySystemWindows.bat archivo o usando construir eventos, puede establecer rutas de acceso de referencia para ayudar a Visual Studio encontrar donde el MWD nuevo, como se muestra a continuación. La única salvedad es que se necesita especificar% programfiles% y% programfiles (x86)% para construirlo en equipos x86 y x64 máquinas.

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

Las rutas de regulación de referencia se mantuvo hasta el csproj.user. Archivo:

<Proyecto xmlns = " http://schemas.microsoft.com/developer/msbuild/2003 " >
<PropertyGroup>
<ReferencePath> C: \ Archivos de programa \ \ Microsoft Expression Blend \ 3 Preview, c: \ Archivos de programa (x86) \ \ Microsoft Expression Blend 3 Prevista \ </> ReferencePath
</ PropertyGroup>
</ Project>

Metadata.cs

Yo uso el marco de aplicación como se describe en tiempo de diseño de funciones de aplicación de Silverlight Toolkit , con algunos cambios menores:

Metadata.cs in Silverlight 3 Toolkit Source

  • Me mudé para compartir enlaces a los archivos y Extensions.cs MetadataBase.cs de la carpeta Controls.Design.Common a menos de una carpeta de soluciones con el mismo nombre;
  • En Metadata.cs. Diseño y. Proyectos Expression.Design utilizar el nuevo punto de entrada: el uso conjunto de atributos ProvideMetadata e implementar la interfaz IProvideAttributeTable;
  • Añadir nota que todo en AddAttributes () método necesita ser duplicado en los correspondientes. VisualStudio.Design proyecto.

El VisualStudio.Design. Proyectos siguen utilizando la antigua interfaz IRegisterMetadata en 3,5 MWD, pero:
image

  • bajo la carpeta de Controls.Design son enlaces a todos los archivos en Metadata.cs * correspondiente. diseño del proyecto;
  • AddAttributes () método duplica el contenido de AddAttributes () en que corresponde. Diseño del proyecto.

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

Conclusión

Si bien los cambios en romper MWD puede causar algunos inconvenientes, es necesario aplicar a la rica experiencia de un tiempo de diseño de Silverlight como de WPF. Este artículo describe una forma de manejar los cambios de última hora y siguen apoyando a todos los diseñadores actuales: Visual Studio 2008, Blend 2, y Blend 3. Una vez que Visual Studio 2010 está disponible al público, voy a blog acerca de la convención de nombres nuevos, y cómo el diseño Toolkit trabajo a tiempo parcial en Visual Studio 2010. ¡Estén pendientes!

12/5/2009: Actualización para VS2010 Beta 2

Para solucionar problema de encima prestan apoyo tanto a Visual Studio y 2008/Blend2 2010/Blend3 Visual Studio, que utilizan las versiones incompatibles de MWDs (v3.5 vs. V4.0), la convención de nomenclatura para las asambleas en tiempo de diseño se ha mejorado desde VS2010 Beta 2 y Mezcla 3:

para un tiempo de ejecución de montaje Foo.dll, la asamblea en tiempo de diseño para compartir, se llama Foo.Design *. dll, el Visual Studio específicas de montaje en tiempo de diseño se llama Foo.VisualStudio.Design *. dll, y la combinación específica de montaje en tiempo de diseño se denomina de Foo . Expression.Design *. dll, donde * puede ser cero o más caracteres válidos para nombres de archivo. Cuando un diseñador (como Visual Studio o Blend) intenta cargar un ensamblado en tiempo de diseño y ajuste de varios de la convención de nomenclatura, cero o uno se cargará:

  • Si la versión del MWD referencia el tiempo de montaje diseño tiene un gran número de versión diferente de la versión de MWD el diseñador, entonces el tiempo de montaje de diseño no se carga y se omite.
  • Si hay más de uno en tiempo de diseño de montaje es compatible con la versión de MWD el diseñador, el diseñador de las cargas un compilado con la versión más alta que MWD es menor o igual a la versión de MWD el diseñador.

Silverlight 3 SDK RDA 2 (también se instala automáticamente por VS2010) y Silverlight Toolkit 3 10 2009 Lanzamiento utilizar la nueva convención de nomenclatura para apoyar tanto a VS2008 y VS2010. Tome System.Windows.Controls.dll por ejemplo, se ha ampliado hacia System.Windows.Controls.VisualStudio.Design.dll MWD 3,5 y es utilizado por VS2008, que utiliza la antigua convención de nomenclatura; una nueva System.Windows.Controls.Toolkit. VisualStudio.Design.4.0.dll construyó contra MWD 4.0 es añadido para VS2010, que comprende la nueva convención de nomenclatura. Por favor, consulte Silverlight Diseño Asambleas Tiempo para más información.

Etiquetas Technorati: , , , ,

Compartir y Disfrutar:

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