【问题标题】:Resharper run configurationsResharper 运行配置
【发布时间】:2016-08-23 15:37:01
【问题描述】:

我正在尝试制作一个 reshaprer 插件,以在 resharper 的构建/运行窗口中添加一个(或多个)配置,除了可执行文件、静态方法、项目之外。 任何指导方针从哪里开始?或者如何访问构建的上下文和配置? 目前正在检查 JetBrains.IDE.RunConfig、SolutionBuilders 等,但我们将不胜感激。 这个插件应该是一个解决方案组件还是一个解决方案实例组件? Resharper 的 sdk 帮助运气文档构建/运行组件。

提前致谢!

【问题讨论】:

    标签: resharper resharper-plugins resharper-sdk


    【解决方案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 本身)。

    【讨论】:

    • 非常感谢马特!真的很有帮助。
    • 并且已经上传到 Resharper 插件和 github。再次非常感谢。
    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多