SharpDevelop:开发插件
SharpDevelop: developing plugins
我想实现一个小功能(获取 WPF 控件的默认 Style
s 和 ControlTemplate
s),SharpDevelop 与 Visual Studio 相比缺少此功能。我面临的问题是我不明白我想扩展的 WpfDesign.Designer 插件的 public API 表面是什么。
是否有一个机制让插件声明其他插件可以扩展它们的方式(插件扩展其他插件在 SharpDevelop 架构中是明确允许的)?
public API 表面是 WpfDesign.Designer 程序集中的所有 public 类型。您可以直接引用它们并在插件的 .addin 文件中指定它,以便在加载插件之前加载设计器插件。
<Manifest>
<Identity name="YourAddInId"/>
<Dependency addin="ICSharpCode.AvalonEdit" requirePreload="true"/>
</Manifest>
使用 public 类型是扩展现有插件的最简单方法。您引用了设计器程序集,但没有将它们复制到本地插件的输出目录。
还有其他方法可以使用插件系统中的扩展路径来扩展 SharpDevelop。这允许您拥有不相互依赖的插件。据我所知,WPFDesigner 插件未定义任何扩展 points/paths,因此我将直接引用设计器程序集并使用它们。
另一种考虑的方法是将更改直接添加到 SharpDevelop 源代码并提交拉取请求,以便它们可以直接包含在 SharpDevelop 中。但是,插件可能有助于证明概念。
我想实现一个小功能(获取 WPF 控件的默认 Style
s 和 ControlTemplate
s),SharpDevelop 与 Visual Studio 相比缺少此功能。我面临的问题是我不明白我想扩展的 WpfDesign.Designer 插件的 public API 表面是什么。
是否有一个机制让插件声明其他插件可以扩展它们的方式(插件扩展其他插件在 SharpDevelop 架构中是明确允许的)?
public API 表面是 WpfDesign.Designer 程序集中的所有 public 类型。您可以直接引用它们并在插件的 .addin 文件中指定它,以便在加载插件之前加载设计器插件。
<Manifest>
<Identity name="YourAddInId"/>
<Dependency addin="ICSharpCode.AvalonEdit" requirePreload="true"/>
</Manifest>
使用 public 类型是扩展现有插件的最简单方法。您引用了设计器程序集,但没有将它们复制到本地插件的输出目录。
还有其他方法可以使用插件系统中的扩展路径来扩展 SharpDevelop。这允许您拥有不相互依赖的插件。据我所知,WPFDesigner 插件未定义任何扩展 points/paths,因此我将直接引用设计器程序集并使用它们。
另一种考虑的方法是将更改直接添加到 SharpDevelop 源代码并提交拉取请求,以便它们可以直接包含在 SharpDevelop 中。但是,插件可能有助于证明概念。