2012-12-03 36 views
6

मुझे पता है कि मैं अपने मल्टीकोर के निर्माण उत्पादन सॉर्ट सकता है दृश्य स्टूडियो में बनाता है आउटपुट विंडो में बिल्ड आदेश आइटम का उपयोग कर (वर्णित के रूप में here)।मैं डिफ़ॉल्ट रूप से बिल्ड ऑर्डर द्वारा विजुअल स्टूडियो के निर्माण आउटपुट को कैसे क्रमबद्ध करूं?

लेकिन एक बार मुझे लगता है कि किया जाता है और फिर से एफ 7 पर पहुंच जाते हैं, विकल्प वापस बिल्ड पर स्विच करता है और मैं फिर से वापस आदेश बिल्ड करने के लिए स्विच करने के लिए है।

वहाँ आउटपुट विंडो में डिफ़ॉल्ट सेटिंग के रूप आदेशबिल्ड स्थापित करने के लिए कोई तरीका है?

थोड़ा सर्च कर रहे हैं मुझे पता चलता है कि इस सवाल का कई बार पूछा गया था लेकिन जवाब कभी नहीं:


संपादित करें:
answerSimon द्वारा दिए गए मेरे लिए काम करता है (या कम से कम यह मुझे सही दिशा में इंगित करता है), लेकिन मैं बस अपना कोड कॉपी नहीं कर सकता और इसे अपने MyMacros प्रोजेक्ट में सम्मिलित नहीं कर सका।

  1. कक्षा देखें एक्सप्लोरर फलक पर, मैक्रो आईडीई में, EnvironmentEvents डबल क्लिक करें नोड: इसके बजाय, मैं निर्माण की घटनाओं के लिए हैंडलर वास्तव में वर्णित here रूप बनाने के लिए इसे पर्यावरण एवेन्ट्स टैब और मैक्रो संपादक फलक पर एक ड्रॉप-डाउन मेनू के रूप में प्रदर्शित करने के लिए।

  2. EnvironmentEvents ड्रॉप-डाउन मेनू से, घटनाओं प्रकार, इस तरह के रूप TaskListEvents का चयन करें। घोषणा कॉम्बो बॉक्स अब उपलब्ध पर उपलब्ध कार्य सूची ईवेंट के साथ आबादी है।

  3. घोषणा पर ड्रॉप-डाउन मेनू, एक घटना का चयन करें, जैसे TaskAdded, मॉड्यूल के लिए अपने घटना प्रक्रिया जोड़ने के लिए।

ईवेंट आपके मैक्रो में डाला गया है और अब आप ईवेंट प्रक्रिया में कोड जोड़ सकते हैं।

अन्यथा, ईवेंट हैंडलर बिल्कुल नहीं कहा जाता है।

उत्तर

2

आप इस प्रकार का दृश्य स्टूडियो मैक्रो, कुछ लिख सकते हैं:

Dim WithEvents MyBuildEvents as BuildEvents 

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles MyBuildEvents.OnBuildBegin 
    OpenBuildOrderOutputPane() 
End Sub 

Private Sub OpenBuildOrderOutputPane() 
    Dim window As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) ' Get Output Window 
    Dim output As OutputWindow = CType(window.Object, OutputWindow) 
    For Each pane As OutputWindowPane In output.OutputWindowPanes ' Browse panes 
     If (pane.Guid = "{2032B126-7C8D-48AD-8026-0E0348004FC0}") Then ' Build Order guid 
      pane.Activate() 
     End If 
    Next 
    window.Activate() 
End Sub 

आप MyMacros, EnvironmentEvents मॉड्यूल में इस कोड को पेस्ट करना होगा।

+0

इसे पाने के लिए अपने उत्तर को संशोधित करना पड़ा। – eckes

+0

शायद क्योंकि आप वीएस 2005 चला रहे हैं। वीएस 2010 पर इस बदलाव की आवश्यकता नहीं है (कुछ ऑटो जेनरेट कोड है जो इसे करता है) –

+0

हाँ। वीएस2005 के साथ, मुझे ** ** यहां वर्णित बिल्ड इवेंट हैंडलर बनाना है: http://msdn.microsoft.com/en-us/library/0b27f9kz(v=vs.80).aspx वे जेनरेट पर भरोसा करते हैं कोड, अन्यथा हैंडलर नहीं बुला रहे हैं ... – eckes