2017-09-25 12 views
8

私はVisual Studio拡張機能でSettingsManagerを使用してユーザー設定を保存しています。SettingsManager.GetWritableSettingsStoreはVisual Studio Extensionのインポート/エクスポートに使用できますか?

SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider.GlobalProvider); 
var store = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings); 

カスタムWPFオプションページas described in this postがあります。私はまた、インポート/エクスポートの設定で動作するように私の拡張子を設定したいと思いますので、私はCreating an Options PageCreating a Settings Categoryページに続く、私のパッケージにこれを追加することが属性:

[ProvideProfile(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Unit Test Boilerplate Generator Settings", 106, 107, true, DescriptionResourceID = 108)] 
[ProvideOptionPage(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Templates", 101, 109, supportsAutomation: true)] 

私は成功し、それはのように見えるようになりましたインポート/エクスポート設定の見出しが表示されますが、エクスポート後にSettingsManagerで保存されたデータは表示されません。 ProvideProfileProvideOptionPageのオプションを探していて、設定しようとしましたがSupportsProfiles = trueでしたが、それは役に立ちませんでした。

どのようにこれらの2つのシステムを接続しますか?

(編集)私は(CollectionPath UnitTestBoilerplateGenerator)プロセスモニタを実行し、ここではSettingsManagerキーを見つけました:

\REGISTRY\A\{08894cfc-f3a9-f49b-133e-3453dfe7a27d}\Software\Microsoft\VisualStudio\15.0_a703f143Exp\UnitTestBoilerplateGenerator\Template_VisualStudio_Moq_File 

そして、ここで(別の内線からの例)に保存されたビルトインオプション:

\REGISTRY\A\{22e40365-b8e3-e9b2-1315-55021a1e4c3d}\Software\Microsoft\VisualStudio\15.0_a703f143\ApplicationPrivateSettings\Xavalon\XamlStyler\Core\Options\StylerOptions\NoNewLineElement 

別々の場所に保管されているようです。これらの組み込みオプションにプログラムで記述したり、インポート/エクスポートにカスタムCollectionPathを含める方法はありますか?

+0

あなたはExternalSettingsManager(https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.settings.externalsettingsmanager.aspx)を試してみましたか?このクラスを使用すると、さまざまなスコープでプロパティとコレクションを検索できます。これには、スコープ内のプロパティとコレクションをさらに操作するための、SettingsStoreクラスとWritableSettingsStoreクラスへの参照が含まれています。 –

+0

@ Wendy-MSFT別のアプリケーションシェルを使用している場合は、このように見えます。インポート/エクスポートでバックアップされた設定にアクセスするにはどのような方法がありますか? – RandomEngy

+0

GetReadOnlySettingsStore読み取り専用操作のために使用され、GetWritableSettingsStoreは読み出し動作と書き込み動作のために使用することができる要求されたスコープのWritableSettingsStoreクラスを提供することができる要求されたスコープのSettingsStoreクラスを提供します。これらの方法の両方を使用して、すべての読み取り専用設定と書き込み可能設定を取得できます。 –

答えて

1

私はそれを行う方法を見つけました。オプションダイアログボックスのフルタイプ名に対応するコレクションパスに書き込む必要があります。鉱山はUnitTestBoilerplate.View.OptionsDialogPageだったので、私はApplicationPrivateSettings\UnitTestBoilerplate\View\OptionsDialogPageというコレクションパスを使用しました。私はまた、実際に設定をエクスポートするためにVSをだますために、オプションのダイアログタイプでダミーのプロパティを作成する必要がありました。だから私はMyPropertyに書いていた場合、私はOptionsDialogPage上

public int MyProperty { get; set; } 

を必要としていました。

しかし、これはVSの新しいバージョンに壊すかもしれない巨大なハックのように思えますもし誰かがいればより洗練されたソリューションが大好きです。

また1つの本当に奇妙の注意点は、文字列の設定のためのキー名に「VisualStudioを」を持っている場合、それは関係なく、あなたがそこに追加するもの「* 1 *のヌル」として戻って来ないということです。

関連する問題