2017-09-25 41 views
8

मैं उपयोगकर्ता सेटिंग्स को स्टोर करने के लिए अपने विजुअल स्टूडियो एक्सटेंशन में SettingsManager का उपयोग कर रहा हूं।सेटिंग्स प्रबंधक। GetWritableSettingsStore विजुअल स्टूडियो एक्सटेंशन में आयात/निर्यात के लिए उपलब्ध है?

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

मेरे पास एक कस्टम WPF विकल्प पृष्ठ, as described in this post है। मैं भी अपने एक्सटेंशन आयात/निर्यात सेटिंग के साथ काम करने के लिए स्थापित करना चाहते हैं, तो मैं Creating an Options Page और Creating 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 के साथ संग्रहीत मेरा कोई भी डेटा निर्यात के बाद दिखाई देता है। मैं ProvideProfile और ProvideOptionPage के तहत विकल्पों को देख रहा था और SupportsProfiles = true सेटिंग करने का प्रयास किया लेकिन इससे मदद नहीं मिली।

मैं इन दोनों प्रणालियों को कैसे जोड़ूं?

(संपादित करें) मैं प्रक्रिया मॉनिटर भाग गया और पाया यहाँ सेटिंग प्रबंधक कुंजियों (CollectionPath UnitTestBoilerplateGenerator):

\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 

तो ऐसा लगता है जैसे वे अलग-अलग क्षेत्रों में संग्रहित हो जाते हैं। क्या अंतर्निहित विकल्पों में प्रोग्रामेटिक रूप से लिखने या आयात/निर्यात में कस्टम संग्रहपैथ शामिल करने का कोई तरीका है?

+0

आप ExternalSettingsManager की कोशिश की है करो (https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.settings.externalsettingsmanager.aspx)? इस वर्ग का उपयोग करके, आप अलग-अलग क्षेत्रों में गुणों और संग्रहों की खोज कर सकते हैं। इसमें स्कोप्स में गुणों और संग्रहों के आगे हेरफेर के लिए सेटिंग्सस्टोर क्लास और WritableSettingsStore क्लास के संदर्भ शामिल हैं। –

+0

@ वेंडी-एमएसएफटी ऐसा लगता है कि जब आप एक अलग एप्लिकेशन खोल करते हैं तो आप इसका उपयोग करते हैं। आयात/निर्यात द्वारा समर्थित सेटिंग्स को पाने के लिए आप किस विधि को कॉल करेंगे? – RandomEngy

+0

GetReadOnlySettingsStore अनुरोधित स्कोप के लिए सेटिंगस्टोर क्लास प्रदान करता है जिसका उपयोग केवल-पढ़ने के लिए किया जा सकता है और GetWritableSettingsStore अनुरोधित स्कोप के लिए WritableSettingsStore क्लास प्रदान करता है जिसका उपयोग संचालन और लेखन कार्यों को पढ़ने के लिए किया जा सकता है। हम सभी रीडोनली और लिखने योग्य सेटिंग्स प्राप्त करने के लिए इन दोनों विधियों का उपयोग कर सकते हैं। –

उत्तर

1

मुझे ऐसा करने का कोई तरीका मिला। आपको अपने विकल्प संवाद प्रकार के पूर्ण प्रकार के नाम से संबंधित संग्रह पथ पर लिखना होगा। मेरा UnitTestBoilerplate.View.OptionsDialogPage था इसलिए मैंने ApplicationPrivateSettings\UnitTestBoilerplate\View\OptionsDialogPage का संग्रह पथ उपयोग किया। वास्तव में सेटिंग निर्यात करने में वीएस को मूर्ख बनाने के लिए विकल्प संवाद प्रकार पर एक डमी संपत्ति बनाने की भी आवश्यकता थी। तो अगर मैं MyProperty को लिख रहा था मैं OptionsDialogPage पर

public int MyProperty { get; set; } 

की जरूरत है।

हालांकि यह एक विशाल हैक जैसा लगता है जो वीएस के एक नए संस्करण को तोड़ सकता है। अगर किसी के पास है तो मुझे एक और अधिक सुरुचिपूर्ण समाधान पसंद आएगा।

इसके अलावा एक वास्तव में अजीब चेतावनी है कि यदि आप एक स्ट्रिंग सेटिंग के लिए कुंजी नाम में "VisualStudio" है, यह के रूप में "1 * अशक्त *" कोई बात नहीं क्या तुम वहाँ जोड़ने वापस आता है।

संबंधित मुद्दे