【问题标题】:SharpDevelop: developing pluginsSharpDevelop:开发插件
【发布时间】:2015-10-02 13:45:53
【问题描述】:
我想实现 SharpDevelop 与 Visual Studio 中缺少的一个小功能(获取 WPF 控件的默认 Styles 和 ControlTemplates)。我面临的问题是,我不明白我想扩展的 WpfDesign.Designer 插件的公共 API 表面是什么。
插件是否有既定的机制来声明其他插件可以以何种方式扩展它们(SharpDevelop 架构中明确允许插件扩展其他插件)?
【问题讨论】:
标签:
c#
wpf
plugins
add-in
sharpdevelop
【解决方案1】:
公共 API 表面是 WpfDesign.Designer 程序集中的所有公共类型。您可以直接引用它们并在插件的 .addin 文件中指定这一点,以便在加载插件之前加载设计器插件。
<Manifest>
<Identity name="YourAddInId"/>
<Dependency addin="ICSharpCode.AvalonEdit" requirePreload="true"/>
</Manifest>
使用公共类型是扩展现有插件的最简单方法。您引用了设计器程序集,但没有将它们本地复制到插件的输出目录。
还有其他方法可以使用插件系统中的扩展路径来扩展 SharpDevelop。这允许您拥有不依赖于彼此的插件。据我所知,WPFDesigner 插件没有定义任何扩展点/路径,因此我将直接引用设计器程序集并使用它们。
另外一种要考虑的方法是将更改直接添加到 SharpDevelop 源代码并提交拉取请求,以便它们可以直接包含在 SharpDevelop 中。但是,插件可能有助于作为概念证明。