2010-05-28 13 views
5

कैसे करें मैं कुछ रेक मैक्रोज़ से पहले "फ़ाइल -> सभी सहेजें" चलाने के बराबर की तलाश में हूं।विजुअल स्टूडियो मैक्रो: "फ़ाइल -> सभी सहेजें" प्रोग्रामेटिक रूप से

क्या मैं अब तक है:

Private Sub Pre_Rake() 
     Dim i As Integer 

     DTE.Documents.SaveAll() 

     For i = 1 To DTE.Solution.Projects.Count 
      If Not DTE.Solution.Projects.Item(i).Saved Then 
       DTE.Solution.Projects.Item(i).Save() 
      End If 
     Next 
End Sub 

DTE.Documents.SaveAll ठीक काम करता है, लेकिन जैसा कि मैंने उम्मीद करेंगे पाश के लिए परियोजना फ़ाइलों को सहेज नहीं करता है।

यदि मैं समाधान एक्सप्लोरर में किसी फ़ाइल की एक प्रति बना देता हूं, तो उस फ़ाइल को प्रोजेक्ट फ़ाइल (.CSPROJ) में Pre_Rake() रन के बाद शामिल नहीं किया गया है। मुझे अभी भी CTRL-SHIFT-S या फ़ाइल -> सभी को सहेजें दबाएं।

तो, सभी को विजुअल स्टूडियो मैक्रो के साथ कैसे सहेजना है?

उत्तर

8

स्पष्ट रूप से DTE.Documents.SaveAll सभी खुले दस्तावेज़ों को सहेजता नहीं है (शायद यह केवल खुली परियोजनाओं से संबंधित है)।

DTE.ExecuteCommand("File.SaveAll") 

जो फ़ाइल -> सभी को सहेजने जैसा है, का उपयोग करने का प्रयास करें।

+0

बहुत भयानक। कहा के रूप में काम करता है। –

2

आप समझ क्यों पाश के लिए काम नहीं किया में रुचि रखते हैं, ऐसा इसलिए है क्योंकि हम भी परियोजना आइटम के माध्यम से लूप करने के लिए है:

Sub SaveAllFiles() 
    For i = 1 To DTE.Solution.Projects.Count 
     If Not DTE.Solution.Projects.Item(i).Saved Then 
      DTE.Solution.Projects.Item(i).Save() 
     End If 
     For j = 1 To DTE.Solution.Projects.Item(i).ProjectItems.Count 
      If Not DTE.Solution.Projects.Item(i).ProjectItems.Item(j).Saved Then 
       DTE.Solution.Projects.Item(i).ProjectItems.Item(j).Save() 
      End If 
     Next 
    Next 
End Sub 
+0

बहुत अच्छा। धन्यवाद। –

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