2016-08-23 153 views
1

我試圖讓一個reshaprer插件添加一個(或多個)配置,除了可執行文件,靜態方法,項目,在resharper的構建/運行窗口。 任何指導從何入手?或者如何訪問構建的上下文並配置? 目前正在檢查JetBrains.IDE.RunConfig,SolutionBuilder等,但不勝感激。 這個插件應該是一個SolutionComponent還是一個SolutionInstanceComponent? Resharper的sdk幫助運行構建/運行組件的文檔。resharper運行配置

提前致謝!

回答

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; 
} 

編輯者的觀點被顯示在一個對話框,ReSharper的控件WPF控件提供。該視圖需要使用[View]屬性進行修飾,並且必須執行IView<T>,其中T是從CreateEditor返回的具體類。這就是ReSharper如何找到由CreateEditor返回的視圖模型的視圖。再次,在dotPeek中查看RunConfigMethodView,以瞭解正在發生的事情(如果您查看資源,您將能夠看到XAML本身)。

+0

非常感謝馬特!真的很有幫助。 – dseferlis

+0

已經上傳到Resharper插件和github上。再次感謝。 – dseferlis