2016-08-23 13 views
1

reshapperのビルド/実行ウィンドウで、実行可能な静的メソッド、プロジェクトのほかに、1つ(または複数)のコンフィギュレーションを追加するためのreshaprerプラグインを作成しようとしています。 ガイドラインはどこから始めるのですか?または、ビルドのコンテキストにアクセスして設定する方法は? 現在、JetBrains.IDE.RunConfig、SolutionBuildersなどを調べていますが、助けていただければ幸いです。 このプラグインをSolutionComponentまたはSolutionInstanceComponentにする必要がありますか? Resharperのsdkヘルプは、ビルド/実行コンポーネントのドキュメントを幸運にします。Resharperの実行コンフィギュレーション

ありがとうございます!

答えて

1

IRunConfigIRunConfigProviderを実装することで、使用可能な実行コンフィギュレーションタイプを拡張できます。

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でエディタビューモデルを提供できます。エディタのビューがReSharperのコントロールというダイアログに表示されるWPFコントロールによって提供され

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

:あなたは、のようなものを設定するクラスが必要になります。ビューは[View]属性で装飾する必要があり、IView<T>を実装する必要があります。ここでTCreateEditorから返された具象クラスです。これはReSharperがCreateEditorによって返されたビューモデルのビューを見つける方法です。再び、dotPeekのRunConfigMethodViewを見て、何が起こっているのかをさらに確認してください(リソースを見ると、XAML自体を見ることができます)。

+0

ありがとうございましたMatt!本当に役に立ちました。 – dseferlis

+0

すでにResharperのプラグインとgithubにアップロードされています。もう一度ありがとう。 – dseferlis

関連する問題