Resharper run configurations

时间:2016-08-23 15:37:02

标签: resharper resharper-plugins resharper-sdk

I'm trying to make a reshaprer plugin to add one (or more) configurations, besides executable, static method, project, at resharper's build/run window. Any guidelines where to start? Or how to access build's context and configure? Currently examining the JetBrains.IDE.RunConfig, SolutionBuilders etc but one help would be appreciated. Should this plugin be a SolutionComponent or a SolutionInstanceComponent? Resharper's sdk help lucks documentation on build/run component.

Thank in advance!

1 个答案:

答案 0 :(得分:1)

您可以通过实施IRunConfigIRunConfigProvider扩展可用的运行配置类型。

IRunConfigProvider类需要标记为[ShellComponent],并且可以从RunConfigProviderBase抽象基类派生。您可以指定名称,例如"Executable",类型标识符,例如"exe"和图标ID。还有CreateNew方法,它将创建一个IRunConfig类的新实例,此时大部分都是未配置的。

IRunConfig界面不需要标记为组件,也应该来自RunConfigBase - 请查看dotPeek中的RunConfigExe以查看示例实施。您应该覆盖Execute,以便实际运行您需要运行的任何内容。您可以使用传入的RunConfigContext类来实际执行来自ProcessStartInfoIProject的进程 - 这将通过运行进程,调试它或其他方式来执行它,例如代码覆盖率或分析。

对于.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本身)。