2017-09-25 14 views
8

Tôi đang sử dụng SettingsManager trong tiện ích Visual Studio để lưu trữ cài đặt người dùng.Cài đặtManager.GetWritableSettingsStore có sẵn để nhập/xuất trong Visual Studio Extension?

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

Tôi có trang tùy chọn WPF tùy chỉnh, as described in this post. Tôi cũng muốn thiết lập mở rộng của tôi lên để làm việc với các thiết lập Import/Export, vì vậy tôi theo Creating an Options PageCreating a Settings Category trang, để thêm video này vào gói của tôi thuộc tính:

[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)] 

tôi đã thành công nó xuất hiện như một tiêu đề trong cài đặt Xuất/Nhập, nhưng không có dữ liệu nào của tôi được lưu trữ với SettingsManager xuất hiện sau khi xuất. Tôi đã xem xét các tùy chọn dưới ProvideProfileProvideOptionPage và đã cố gắng thiết lập SupportsProfiles = true nhưng điều đó không giúp ích gì.

Làm cách nào để móc hai hệ thống này lên?

(chỉnh sửa) Tôi chạy Process Monitor và tìm thấy các phím quản lý cài đặt tại đây (CollectionPath UnitTestBoilerplateGenerator):

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

Và được xây dựng trong tùy chọn lưu trữ ở đây (ví dụ từ tiện ích khác):

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

Vì vậy, có vẻ như chúng được lưu trữ trong các khu vực riêng biệt. Có cách nào để viết theo chương trình cho các tùy chọn được tích hợp sẵn hoặc để bao gồm Bộ sưu tập tùy chỉnh trong quá trình nhập/xuất không?

+0

Bạn đã thử ExternalSettingsManager (https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.settings.externalsettingsmanager.aspx) chưa? Bằng cách sử dụng lớp này, bạn có thể tìm kiếm các thuộc tính và các bộ sưu tập trong các phạm vi khác nhau. Nó chứa tham chiếu đến lớp SettingsStore và lớp WritableSettingsStore để thao tác thêm các thuộc tính và các bộ sưu tập trong phạm vi. –

+0

@ Wendy-MSFT Có vẻ như đây là những gì bạn sử dụng khi bạn có một vỏ ứng dụng riêng biệt. Bạn sẽ gọi phương thức nào để truy cập cài đặt được Sao lưu/Xuất sao lưu? – RandomEngy

+0

GetReadOnlySettingsStore cung cấp lớp SettingsStore cho phạm vi yêu cầu có thể được sử dụng cho các hoạt động chỉ đọc và GetWritableSettingsStore cung cấp lớp WritableSettingsStore cho phạm vi được yêu cầu có thể được sử dụng cho các hoạt động đọc và các hoạt động viết. Chúng tôi có thể sử dụng cả hai phương pháp này để nhận tất cả cài đặt chỉ đọc và có thể ghi. –

Trả lời

1

Tôi đã tìm được cách để thực hiện. Bạn cần ghi vào đường dẫn bộ sưu tập tương ứng với tên đầy đủ của loại hộp thoại tùy chọn của bạn. Của tôi là UnitTestBoilerplate.View.OptionsDialogPage vì vậy tôi đã sử dụng đường dẫn thu thập là ApplicationPrivateSettings\UnitTestBoilerplate\View\OptionsDialogPage. Tôi cũng cần thiết để tạo một thuộc tính giả trên loại hộp thoại tùy chọn để đánh lừa VS thực sự xuất cài đặt. Vì vậy, nếu tôi đang viết thư cho MyProperty Tôi cần

public int MyProperty { get; set; } 

trên OptionsDialogPage.

Tuy nhiên, điều này có vẻ như một hack lớn có thể xảy ra trên phiên bản mới của VS. Tôi rất thích một giải pháp thanh lịch hơn nếu có ai đó.

Ngoài ra một thực sự lẻ báo trước là nếu bạn có "VisualStudio" trong tên khóa cho cài đặt chuỗi, nó sẽ trở lại dưới dạng "1 * null *" bất kể bạn thêm gì ở đó.

Các vấn đề liên quan