如何撰写Silverlight的所有设计师设计时间为:Visual Studio 2008中,混合2,配方3,和Visual Studio 2010
介绍
这部分是该系列的变化及时执行设计Silverlight的工具包 2009年3月发布 。 这个岗位的重点在Silverlight 3/Blend 3/Visual工作室2010年推出的可扩展性框架的设计打破变化,以及如何开发Silverlight的设计时支持所有设计师:视觉工作室2008/Blend 2,和Visual Studio 2010/Blend 3。
Silverlight 2的设计时间为Visual Studio 2008和配方2
Visual Studio和交融共享相同的设计可扩展的框架,它为使用Silverlight和WPF的。 WPF设计器扩展 MSDN上可能是最好的参考框架,可用于设计可扩展性。 在2008年12月发布的Silverlight的工具包是基于Silverlight 2中(又名SL2),并支持视觉设计工作室2008(又名VS9)和混合2。 这是一个良好的展示如何开发Silverlight 2的设计VS9 Blend 2的时代特征和现实世界的例子。 我的博客后设计时功能实现在Silverlight Toolkit的详细说明它是如何做,以及执行框架读者可以使用自己设计的时间执行。
总结来说,在Silverlight 2设计为Visual Studio 2008和Blend 2的时间框架概括地说:
- 分子量分布:在设计时的可扩展性的框架,是透过公开的程序集,最显着Microsoft.Windows.Design.dll,Microsoft.Windows.Design.Extensibility.dll和Microsoft.Windows.Design.Interaction.dll。 这些组件被称为集体随钻。 它们是安装在%DevEnvDir%\ PublicAssemblies(丙:\ Program Files文件\微软的Visual Studio 9.0 \ Common7 \ IDE中\ PublicAssemblies在32位操作系统,或C:\程序文件(x86)的\微软的Visual Studio 9.0 \ Common7 \ IDE中\ PublicAssemblies在64位操作系统)。 他们还活性炭- ED镜头。 大多数项目需要设计时参考的分子量分布的DLL。 Visual Studio 2008和Blend 2的使用随钻3.5版。
- 命名约定:Visual Studio和配方设计时加载的程序集使用的命名约定:为控制装配Foo.dll,VS和Blend会找到这个名字Foo.Design.dll,Foo.VisualStudio.Design.dll,其设计时组件Foo.Expression.Design.dll,在同一目录下Foo.dll是,或设计子目录。 Visual Studio将负载Foo.Design.dll和Foo.VisualStudio.Design.dll,而共混将装载Foo.Design.dll和Foo.Expression.Design.dll。 因此,应把设计时间功能共享跨越英寸Design.dll所有设计师,并提出具体的Visual Studio和配方设计。VisualStudio.Design.dll的时代特点和。Expression.Design.dll分别。
- 入口点:当Visual Studio或混合设计时加载程序集,它使用反射来找到所有的类,实现IRegisterMetadata ,并调用它的唯一方法注册 。 Silverlight的工具包2008年12月发布了一个执行框架设计时在以前的博客后的详细设计时Silverlight的工具包功能的实现 。
下面截图的Silverlight.Controls.Design.sln在Silverlight 2工具包中源2009年3月发布实施表明上述讨论SL2 Blend 2的设计时间VS9和:
在Silverlight 3什么变化,共混3和Visual Studio 2010
正如在WPF设计器扩展性建筑 MSDN上的:
在WPF设计器支持完整的可扩展性的框架。 Expression Blend中仅支持属性编辑器,元数据加载,和发牌。 混合不支持菜单行动和adorners。
配方2具有以上Silverlight的设计时间也有限的支持,但Visual Studio 2008的Silverlight的设计时已不大支持(只是图标,像ToolboxBrowsableAttribute几个属性的元数据负载):这是一个设计师多于观众。 有Silverlight的WPF的设计时支持,共混3和Visual Studio 2010(又名VS10)平价必须打破以设计师介绍扩展框架(即分子量分布的变化),主要是:
- 分子量分布:设计师的可扩展框架API的大部分保持不变,但他们的身体包装上的改变:Microsoft.Windows.Design.dll走了,和所有随钻集会由3.5变化到4.0版本。 之前的Visual Studio 2010 Beta1的,唯一的方法获得新的分子量分布是通过共混3预览,它的版本是3.7,而不是现在的4.0:
- 切入点:不是反映通过IRegisterMetadata实现,配方3和Visual Studio 2010使用新的程序集属性ProvideMetadataAttribute和metadataProviderType必须实现IProvideAttributeTable:

- 命名约定:因为喜欢随钻版和切入点,断裂的变化,现有的设计时间3.5分子量分布集会反对发达国家将不会加载在Blend 3和Visual Studio 2010,你必须写反对新配方3 4.0和MWD新的设计时间Visual Studio的2010年。 虽然这是对共混行(因为你可以只使用与Silverlight 3和3混合使用Silverlight 2),这将创建一个Visual Studio的挑战Blend 2的,因为你可以为Silverlight 3开发使用的Visual Studio 2008,以及Visual Studio中2010年为Silverlight 2开发。
下表列出了所有支持的方案并随钻版本用于装载设计时程序集:
| Sl的\设计师 | VS9 | VS10 | Blend2 | Blend3 |
| SL2 | MWD3.5 | MWD4.0 | MWD3.5 | |
| SL3型 | MWD3.5 | MWD4.0 | MWD4.0 |
我们不能建立一个对两个不相容MWDs设计时间组装,所以我们要创建两个单独的设计时间集会,对每个分子量分布1。 设计时加载的程序集的名称,我们不能有两个在同一地点同一名称的程序集,因此设计时程序集加载机制(即命名约定)必须改变,以允许多个版本的同一设计时装配并存。
而新的命名约定来等待与交融3和Visual Studio 2010 RTM的了,我们现在可以做的很漂亮,以支持VS9和VS10。 记住当前的命名惯例允许Visual Studio和配方每个加载两个设计程序集:
| DLL的\设计师 | 视觉工作室 | 混合 |
| Foo.Design.dll | X | X |
| Foo.VisualStudio.Design.dll | X | |
| Foo.Expression.Design.dll | X |
所以我们可以建立对分子量分布不同版本的两个组件:
- 为Silverlight 3中,我们可以共享的。Design.dll建立对分子量分布4.0,因此它可以通过两种VS10与交融三加载。 然后,我们有。VisualStudio.Design.dll建立对随钻3.5和重复共享。Design.dll,因此它可以通过VS9加载一切。 有一个小问题,但:我们没有一个地方让别人VS10 Visual Studio的具体设计时的功能,如使用ToolboxBrowsableAttribute(假),以躲避日益拥挤的Visual Studio工具箱一些控制,因为VS10无法加载, 。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与交融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工具包
分子量分布
Silverlight的工具包中的设计项目3 2009年3月发布之后上述计划,以支持双方的Visual Studio 2008和Visual Studio 2010,以及混合3。
下载2009年3月发布 ,解压缩的源代码,加载到Visual Studio 2008 Silverlight.Controls.Design.sln。 使用简单Control.Input.Design项目为例:
- 为VS9/Blend3需要引用新的4.0分子量分布设计项目。 在这里,我们使用预生成事件来调用CopySystemWindows.bat找到配方3和复制两个分子量分布DLL以二进制文件的目录。
- 请注意要CopySystemWindows.bat文件小的变化:我们需要引用“%THIS_DIR%\二进制\ Blend3”(在黄线)来处理的情况下有一个路径空间的源代码解压缩到目录。
如果你不喜欢的脆弱CopySystemWindows.bat文件或使用生成事件,您可以设置引用路径,以帮助Visual Studio中寻找到新的分子量分布是,如下所示。 唯一的条件是,你需要同时指定程序文件%%和%程序文件(x86)的%,使其在x86和x64建机。
该参考路径设置是坚持到。csproj.user文件:
<项目xmlns =“ http://schemas.microsoft.com/developer/msbuild/2003“ >
<PropertyGroup>
<ReferencePath> ç:\ Program Files文件\微软表达\混纺3预览\; ç:\程序文件(x86)的\微软的Expression \混纺3预览\ </ ReferencePath>
</ PropertyGroup>
</项目“>
Metadata.cs
我使用相同的执行框架中所述设计时功能实现在Silverlight工具包的变化,一些小的:
- 我从Controls.Design.Common共享文件夹的链接Extensions.cs和MetadataBase.cs下具有相同名称的解决方案文件夹;
- 英寸设计Metadata.cs和。Expression.Design项目使用新的入口点:使用ProvideMetadata集属性,并执行IProvideAttributeTable接口;
- 添加注意,一切AddAttributes()方法需要在相应的。VisualStudio.Design项目重复。
该。VisualStudio.Design项目仍然在使用旧IRegisterMetadata随钻3.5接口,但是:
- 根据Controls.Design文件夹中的所有* Metadata.cs相应文件的链接。设计项目;
- AddAttributes()方法重复了AddAttributes()方法中的相应内容。设计项目。
结论
而在分子量分布的变化可能导致一些打破不便,有必要为实现丰富的Silverlight的WPF的一个设计时的经验。 这个职位描述的方式来处理重大的变动,仍然支持所有现有设计师:Visual Studio 2008中,混合2,混合3。 一旦Visual Studio的2010年是公用的,我将博客对新命名规则,以及如何设计工具包的工作时间在Visual Studio 2010。 敬请期待!
2009年12月5日:更新为VS2010 Beta2版
为了解决上述的同时支持Visual Studio的2008/Blend2和Visual Studio 2010/Blend3,其中使用MWDs不兼容的版本(v3.5版本主场迎战问题。4.0),为设计时组件的命名约定是从VS2010 Beta2和增强配方3:
对于一个运行时组装Foo.dll,共享的设计时间组装*. dll文件名为Foo.Design,在Visual Studio中的具体设计时程序集名为Foo.VisualStudio.Design *. dll文件,并具体设计时的混合组装名为富。Expression.Design *. dll文件,其中*可以是零或多个文件名的有效字符。 当一个或混合设计(如Visual Studio中)试图加载一个程序集设计时间和几个适合的命名约定,零或一个将被载入:
- 如果随钻版本所引用的程序集设计时有一个设计师的分子量分布不同版本的主版本号比,那么设计时将不加载程序集,并绕过。
- 如果有一个以上的设计时程序集的版本兼容设计师的随钻测量,随钻的设计荷载版本的反编译一个版本的最高分子量分布小于或等于设计师。
Silverlight的3 SDK的东德2 (也安装了VS2010自动)和 2009年10月3 Silverlight的工具包发布使用新的命名约定,以支持VS2008的和VS2010。 就拿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的设计时组件的更多信息。








最近的评论