4

ホットキーで配色を切り替えることができる Visual Studio 2008 用のアドインを作成しています。

配色を正常に読み込んで適用することができましたが、非常に遅いです。

スキームを適用するコードは次のとおりです。

// The Theme class is a holder for a color scheme
private static void LoadTheme(Theme theme, DTE2 application)
{
    var items = GetItems(application);

    foreach (var item in items)
    {
        if (!theme.Properties.ContainsKey(item.Name)) continue;

        var prop = theme.Properties[item.Name];

        item.Background = prop.Background;
        item.Foreground = prop.Foreground;
        item.Bold = prop.Bold;
    }
}

private static IEnumerable<ColorableItems> GetItems(DTE2 application)
{
    var fontsAndColorsItems = (FontsAndColorsItems) application
                                                        .get_Properties("FontsAndColors", "TextEditor")
                                                        .Item("FontsAndColorsItems")
                                                        .Object;

    return fontsAndColorsItems.Cast<ColorableItems>();
}

基本的に、GetItems は Visual Studio のオプションから ColorableItems のリストを取得します。これらの項目のいずれかにプロパティを設定すると、変更がすぐに VS に適用されます。配色には 100 を超えるプロパティを含めることができるため、300 以上の更新操作が必要になり、非常に長い時間がかかります (私のラップトップでは 10 秒以上)。

プロパティを更新している間は更新しないようにVSに伝えたいのですが、完了したら更新するように指示しますが、それを行う方法が見つかりません。

理想的には、VS ウィザードで設定のインポート/エクスポートを実行する場合と同様に、プロセス全体に 1 ~ 2 秒かかります。

私は代替アプローチにもオープンです。レジストリ設定を単純に上書きするという考えがありましたが、VSにその設定を強制的にリロードさせる方法が必要です。

4

1 に答える 1

3

さて、私は非常にうまく機能する解決策を見つけました。次のように、Visual Studio の実際のインポート/エクスポート設定機能を呼び出すだけです。

application.ExecuteCommand(
    "Tools.ImportandExportSettings", 
    string.Format("/import:\"{0}\"", file));

filevssettings ファイルへのフル パスはどこにありますか。これは約 1 秒で実行されます。

アドインの動作方法を変更する必要がありますが、実際にはこの方法の方が簡単です。

于 2011-04-07T23:02:29.080 に答える