您可以通过实现IRunConfig 和IRunConfigProvider 来扩展可用的运行配置类型。
IRunConfigProvider 类需要标记为[ShellComponent],并且可以派生自RunConfigProviderBase 抽象基类。您可以指定一个名称,例如"Executable",类型标识符,例如"exe" 和一个图标 ID。还有 CreateNew 方法,它将创建您的 IRunConfig 类的新实例,此时该实例大部分未配置。
IRunConfig 接口不需要标记为组件,也应该从RunConfigBase 派生 - 请查看 dotPeek 中的RunConfigExe 以查看如何实现的示例。您应该覆盖 Execute 以便实际运行您需要运行的任何内容。您可以使用传入的RunConfigContext 类从ProcessStartInfo 或IProject 实际执行进程 - 这将通过运行进程、调试它或其他方式来执行它,例如代码覆盖率或分析.
对于一个 .exe,这很简单:
public override void Execute(RunConfigContext context)
{
context.ExecutionProvider.Execute(GetStartInfo(context), context, this);
}
但对于更复杂的示例,请查看RunConfigMethod.Execute,它使用自己的独立启动器可执行文件,并传入命令行参数以加载正确的程序集并执行给定的静态方法。
设置是用ReadSpecific/SaveSpecific实现的,你可以用CreateEditor提供一个编辑器视图模型。您需要一个设置类,例如:
[SettingsKey(typeof (ConfigSettings), ".exe config")]
public class ExeSettings
{
[SettingsEntry(null, "Path to .exe")] public string Executable;
[SettingsEntry(null, "Working directory")] public string WorkingDirectory;
[SettingsEntry(null, "Command line arguments")] public string Arguments;
}
编辑器的视图由 WPF 控件提供,该控件显示在 ReSharper 控制的对话框中。视图需要使用[View] 属性进行修饰,并且必须实现IView<T>,其中T 是从CreateEditor 返回的具体类。这就是 ReSharper 将如何定位 CreateEditor 返回的视图模型的视图。同样,请查看 dotPeek 中的 RunConfigMethodView 以了解更多信息(如果您查看资源,您将能够看到 XAML 本身)。