2012-01-09 20 views
10

बनाएं जैसा कि मेरा प्रश्न है कि मैं एक टेम्पलेट में आधारित एक नई परियोजना बनाना चाहता हूं जो पहले से ही एक परीक्षण और ठीक काम करता है, लेकिन मुझे दो समस्याएं हैं जब मैंने इसे सी # कोड में करने की कोशिश की (एक में एमवीसी 3 परियोजना)।एक विजुअल स्टूडियो प्रोजेक्ट प्रोग्रामेटिक रूप से

  1. कौन सा EnvDTE80, EnvDTE90 and EnvDTE100 के बीच मतभेद रहे हैं, क्योंकि मैं EnvDTE100 साथ this example करने की कोशिश की, लेकिन यह काम नहीं करता है क्योंकि वस्तु संभाल यह Solution4 नहीं Solution2 और Solution4 है समान व्यवहार नहीं है।
  2. मैं डिफ़ॉल्ट पथ का उपयोग बिना परियोजना कैसे बना सकते हैं, लेकिन एक विशिष्ट फ़ोल्डर मैं

अद्यतन

यहाँ कोड है कि काम करता है अगर मैं dll EnvDTE80

कहा जाता इस्तेमाल किया है कि जरूरत
System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0"); 
    Object obj = System.Activator.CreateInstance(type, true); 
    EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)obj; 
    Solution2 _solution = (Solution2)dte.Solution; 
    string projectTemplatePath = @"C:\Documents and Settings\jmachado\Escritorio"; 
    projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from '<drive>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language.' 

लेकिन अगर मैं EnvDTE100

इस्तेमाल किया 10

और कहते हैं कि DTE2 EnvDTE100

+0

ऐसा लगता है कि आप अपने सभी कोड को एक नए स्रोत में कॉपी करने के बजाय वर्चुअल निर्देशिका से जुड़ना चाहते हैं, ताकि आप एक ही समय में सभी बग फिक्स कर सकें (सभी के लिए ठीक करने के बजाए परियोजनाओं)। http://learn.iis.net/page.aspx/150/understanding-sites-applications-and-virtual-directories-on-iis/ – ThePower

+1

क्या आप वास्तव में स्पष्टीकरण के लिए प्राप्त करने की कोशिश कर रहे कुछ उदाहरण कोड साझा कर सकते हैं आपका प्रश्न? –

+0

@ जोआचिम इस्क्ससन यकीन है कि – Jorge

उत्तर

7

EnvDTE80, EnvDTE90 और EnvDTE100 का नाम स्थान में के बाहर नहीं वी.एस. 8.0 (2005), 9.0 (2008) और 10.0 (2010) के लिए DTE प्रकार पुस्तकालयों, तदनुसार कर रहे हैं।

वीएस -2010 - डीटीई 2 नवीनतम होने के नाते केवल दो डीटीई रूट ऑब्जेक्ट इंटरफेस हैं। तो, वी.एस. 2010 के लिए DTE वस्तु प्राप्त करने के लिए, आप करते हैं:

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); 
Object obj = System.Activator.CreateInstance(type, true); 
EnvDTE8.DTE2 dte = (EnvDTE100.DTE2)obj; 

ध्यान दें कि ProgID "10.0" के लिए है, लेकिन चर प्रकार अभी भी EnvDTE8.DTE2 है।

बाकी को वहां से काम करना चाहिए। ध्यान दें कि यदि आपको इसकी आवश्यकता हो तो आप हमेशा Solution4Solution2 पर जा सकते हैं (लेकिन GetProjectTemplate सीधे Solution4 पर उपलब्ध होना चाहिए)।

+0

हाय और पूछने के लिए धन्यवाद, अब भी मेरी दूसरी समस्या शेष है, मैं इस परियोजना को एक विशिष्ट पथ के साथ कैसे बना सकता हूं जिससे दृश्य स्टूडियो डिफ़ॉल्ट हो ?? – Jorge

+0

मुझे अनुरोध को समझ में नहीं आता है। यदि आपके पास एक कस्टम प्रोजेक्ट टेम्पलेट है जिसे आपने वीएस टेम्पलेट फ़ोल्डर में कॉपी नहीं किया है, तो 'GetProjectTemplate' का उपयोग न करें, लेकिन बस अपने टेम्पलेट पर पूरा पथ सीधे' AddFromTemplate 'पर पास करें। –

+0

क्या कोई वीएस2015 समकक्ष है, या क्या हम सिर्फ डीटीई 100 का उपयोग करते हैं? – tofutim