मेरे पास एक समाधान है जिसमें कई परियोजनाएं हैं, उन्हें प्रोजेक्टए और प्रोजेक्टबी कहते हैं। मुझे ProjectA का संदर्भ रखने के लिए प्रोजेक्टए की आवश्यकता है, हालांकि जब मैं "निर्यात टेम्पलेट" करता हूं तो मुझे संदर्भ रखना प्रतीत नहीं होता है। मैं जो करने की कोशिश कर रहा हूं वह यह है कि जब मैं एक नई परियोजना बनाउंगा तो इसे मेरे लिए संदर्भ बनाएं और उसके बाद मैंने जो भी दर्ज किया है उसे स्वचालित रूप से नाम दें।विजुअल स्टूडियो में टेम्पलेट्स निर्यात करते समय मैं वही समाधान परियोजना संदर्भ कैसे जोड़ूं?
उत्तर
यह शुद्ध विजुअल स्टूडियो टेम्पलेट्स के दायरे से थोड़ा सा है।
दृश्य स्टूडियो टेम्पलेट्स टेम्पलेट्स के लिए प्रतिस्थापन मानकों का समर्थन करता है, तो आप क्या कर सकते हैं यह है:
- अपने
ProjectA.zip
टेम्पलेट फ़ाइल के अंदर आपProjectA.csproj
, जो ProjectA.csproj
में परियोजना के लिए टेम्पलेट है मिलेगा आप करेंगे एक<ItemGroup>
<Reference>
प्रविष्टियों- उनमें से युक्त
<Reference Include="ProjectB">
जब आप अपने प्रोजेक्ट बी-टेम्पलेट से कोई प्रोजेक्ट बनाते हैं, तो इसका नाम उपयोगकर्ता-निर्दिष्ट होगा, इसलिए आप ProjectB
को $Foo$
जैसे प्रतिस्थापन पैरामीटर के साथ प्रतिस्थापित करना चाहते हैं।
यह वह जगह है जहां यह शुद्ध टेम्पलेट्स के दायरे से बाहर हो जाता है: आप $Foo$
को बदलने के लिए दृश्य स्टूडियो कैसे बताते हैं? और प्रतिस्थापन क्या होगा?
कस्टम विज़ार्ड का उपयोग करने के लिए यहां आपकी एकमात्र पसंद है, जो या तो ProjectB-type प्रोजेक्ट की तलाश करती है या उपयोगकर्ता को इसके लिए पूछती है।
यहाँ कैसे टेम्पलेट और कस्टम जादूगर साथ पाने के लिए पाने के लिए एक रूपरेखा है:
- एक VSIX पैकेज परियोजना बनाएँ।
- अपने पैकेज में
[ProvideBindingPath]
विशेषता जोड़ने के लिए सुनिश्चित करें। यह पंजीकृत कस्टम जादूगर प्राप्त करने के लिए आवश्यक है - अपने विज़ार्ड बनाएँ (अन्यथा आप तो वी.एस. इसे पा सकते हैं, GAC के लिए इसे स्थापित करने की आवश्यकता होगी), यह लागू करना चाहिए
Microsoft.VisualStudio.TemplateWizard.IWizard
- समाधान करने के लिए अपने टेम्पलेट जोड़ें और इसे जोड़ने में एक ProjectTemplate परिसंपत्ति के रूप में अपने पैकेज के vsixmanifest
अपने टेम्पलेट की .vstemplate फ़ाइल में <TemplateContent>
ब्लॉक नीचे निम्नलिखित स्निपेट जोड़ें:
<WizardExtension>
<Assembly>Your.Packages.Assembly</Assembly>
<FullClassName>Your.Wizard</FullClassName>
</WizardExtension>
कि आपके wizar लाएगा डी जब परियोजना बनाई गई है। आप RunStarted
विधि में एक संवाद ला सकते हैं जो संदर्भ के लिए पूछता है या आप प्रोजेक्टबी प्रोजेक्ट को आजमाने और खोजने के लिए automationObject
पैरामीटर (जो वास्तव में EnvDTE.DTE
उदाहरण है) का उपयोग कर सकते हैं और replacementsDictionary
में इसका नाम प्रदान कर सकते हैं।