Resharper запустить конфигурации

Я пытаюсь создать плагин Reshaprer для добавления одной (или нескольких) конфигураций, помимо исполняемого, статического метода, проекта, в окне сборки / запуска Resharper. Любые рекомендации, с чего начать? Или как получить доступ к контексту сборки и настроить? В настоящее время изучаем JetBrains.IDE.RunConfig, SolutionBuilders и т. Д., Но была бы признательна за помощь. Должен ли этот плагин быть SolutionComponent или SolutionInstanceComponent? Помощь sdk от Resharper удаляет документацию по компоненту build / run.

Заранее спасибо!

1 ответ

Решение

Вы можете расширить доступные типы конфигурации прогона, внедрив IRunConfig а также IRunConfigProvider,

IRunConfigProvider класс должен быть помечен как [ShellComponent]и может происходить из RunConfigProviderBase абстрактный базовый класс. Вы можете указать имя, например "Executable"идентификатор типа, например "exe" и значок идентификатора. Также есть метод CreateNew, который создаст новый экземпляр вашего IRunConfig класс, который будет в основном ненастроенным, на данный момент.

IRunConfig интерфейс не должен быть помечен как компонент, а также должен происходить из RunConfigBase - Взгляни на RunConfigExe в dotPeek, чтобы увидеть пример того, как реализовать. Вы должны переопределить 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, Опять же, посмотрите на RunConfigMethodView в dotPeek для получения дополнительной информации о том, что происходит (и если вы посмотрите на ресурсы, вы сможете увидеть сам XAML).

Другие вопросы по тегам