क्या मैं डीबगर में एक विशिष्ट प्रोजेक्ट लॉन्च करने के लिए विजुअल स्टूडियो मैक्रो बना सकता हूं?

मेरे प्रोजेक्ट में एक ही समाधान फ़ाइल में क्लाइंट और सर्वर घटक दोनों हैं। डिबगिंग करते समय आमतौर पर उन्हें एक साथ शुरू करने के लिए डीबगर सेट होता है, लेकिन अक्सर ऐसा होता है जब मैं सर्वर को डीबगर के बाहर शुरू करता हूं, इसलिए क्लाइंट-साइड केवल सामान पर काम करते समय मैं क्लाइंट को शुरू और बंद कर सकता हूं। (यह बहुत तेज़ है)।

मैं अलग-अलग परियोजनाओं को शुरू करने के लिए सॉल्यूशन एक्सप्लोरर में चारों ओर घूमने की परेशानी को बचाने की कोशिश कर रहा हूं और टूलबार पर बस एक बटन चिपकाऊंगा जो एक मैक्रो को कॉल करता है जो अलग-अलग परियोजनाओं के लिए डीबगर शुरू करता है (जबकि "एफ 5" प्रकार को अकेले डिबगिंग छोड़ना दोनों प्रक्रिया शुरू करें)।

मैंने रिकॉर्डिंग की कोशिश की, लेकिन वास्तव में कुछ भी उपयोगी नहीं हुआ।

अब तक मैंने जो कुछ करने में कामयाब रहा है वह समाधान एक्सप्लोरर में प्रोजेक्ट आइटम का पता लगाने के लिए है:

 Dim projItem As UIHierarchyItem

 projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)

(यह मैक्रो रिकॉर्डर को ऐसा करने का प्रयास करने के तरीके पर आधारित है। मुझे यकीन नहीं है कि यूआई ऑब्जेक्ट मॉडल को नेविगेट करना सही दृष्टिकोण है, या यदि मुझे इसके बजाय समाधान/प्रोजेक्ट ऑब्जेक्ट मॉडल के माध्यम से जाना चाहिए)।

0

2 उत्तर

ठीक। यह अधिकांश यूआई (सभी?) संदर्भों से काम करता प्रतीत होता है बशर्ते समाधान लोड हो:

 Sub DebugTheServer()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("Solution\ServerFolder\ServerProject").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.Windows.Item(Constants.vsWindowKindOutput).Activate()
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")
 End Sub
0
जोड़ा

सी # एड-इन से, निम्नलिखित मेरे लिए काम किया:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);
0
जोड़ा
मैं कह रहा हूं कि इसे किसी भी विजुअल स्टूडियो ऐड-इन से काम करना चाहिए।
जोड़ा लेखक Erwin Mayer, स्रोत
नहीं, यदि डीटीई ऑब्जेक्ट प्राप्त करने के लिए डीटीई ऑब्जेक्ट प्राप्त करने के लिए यह थोड़ा अधिक जटिल है, तो यह सुनिश्चित न करें कि आपका प्रश्न क्या है, लेकिन यह सुनिश्चित न करें कि आपका प्रश्न क्या है लेकिन आपको शायद इस उत्तर पर टिप्पणी करने के बजाय एक नया खोलना चाहिए।
जोड़ा लेखक Erwin Mayer, स्रोत
मुझे लगता है कि आप पहले से ही मेरी जिस्ट पा चुके हैं: gist.github.com/mayerwin/82301024371e9c555d24 इसे चाहिए आपको जो चाहिए उसे प्राप्त करने में आपकी सहायता करें।
जोड़ा लेखक Erwin Mayer, स्रोत
कौन सा सी # एड-इन?
जोड़ा लेखक vendettamit, स्रोत
हो सकता है कि मैं EnvDtE amd EnvDte80 के अलावा कुछ संदर्भ याद कर रहा हूं। हाँ?
जोड़ा लेखक vendettamit, स्रोत
हां .. लेकिन वह अनुपस्थित नामस्थानों और कक्षाओं के कारण .NET 4.5 के साथ काम नहीं कर रहा था। मुझे 4.5 के लिए SO यहां पर एक और समाधान मिला।
जोड़ा लेखक vendettamit, स्रोत