Visual Studio可扩展性如何创建自定义设计器

时间:2014-01-13 13:26:56

标签: c# visual-studio vsx vspackage

我正在尝试使用Visual Studio可扩展性(VSX)来创建可视工作室自定义设计器。我正在使用默认的可扩展性“Package”项目类型和Visual Studio包创建向导,该向导提供了自定义编辑器的创建。这很棒!但是,我想创建自己的自定义设计器,向导只创建客户编辑器而不是自定义设计器。

是否有人有关于如何创建自定义设计器的示例或任何参考文档,即使只是修改VS向导创建的客户编辑器?

到目前为止,我已经使用Visual Studio包项目向导来创建客户编辑器。从自定义编辑器向导创建的默认代码开始,我更改了以下内容: 1)将编辑器的Microsoft.VisualStudio.Shell.WindowPane类型的窗格更新为Designer的Microsoft.VisualStudio.Shell.Design.DesignerWindowPane。我在DesignerWindowPane上实现了接口。 我更新了EditorFactory以反映Window Pane类型的变化。 2)然后我将以下属性添加到包类中。

[DesignSurfaceExtensionAttribute(typeof(TierDesigner))]
[ProvideObjectAttribute(typeof(TierDesigner))]
[ProvideServiceAttribute(typeof(TierDesigner))]

我还将逻辑视图属性修改为

    [ProvideEditorLogicalView(typeof(EditorFactory), VSConstants.LOGVIEWID.Designer_string)]

虽然我没有删除任何默认编辑器属性

    [ProvideEditorExtension(typeof(EditorFactory), ".ld", 50, 
          ProjectGuid = Guids.PckgGuid, 
          TemplateDir = "Templates", 
          NameResourceID = 105,
          DefaultName = "Layers")]

3)我添加了一个类TierDesigner的DesignSurfaceExtension类型,如上面2中的属性所示。

通过实验配置单元测试我通过VS文件菜单创建自定义文件类型'.ld'并添加到csproj。当我单击'.ld'文件打开EditorFactory运行正常时,它会创建WindowsDesignerPane类型,一旦它退出EditorFactory代码,它就会崩溃,错误代码为'灾难性故障(HRESULT:0:8000FFFF异常) E_UNEXPECTED))。

我相信有些东西我没有实现,但却找不到确切的问题。

到目前为止,我已经使用了Dive Deep VSX系列VSX Information和Visual Studio 2010 SDK代码示例,但这些都没有提供有关创建自定义设计器的任何参考资料,而且我无法在任何地方找到参考文档。所有

我正在尝试使用客户设计器根据自定义设计器中创建的层自动化一些样板层代码。

非常感谢任何帮助,示例或建议! 感谢

0 个答案:

没有答案