7

मैंने हाल ही में अपने सी # कार्यक्रमों में काम कर रहे लुआ स्क्रिप्टिंग प्राप्त करने के लिए लुआइंटरफेस के साथ खेलना शुरू कर दिया। विजुअल स्टूडियो के भीतर से आसानी से लुआ स्क्रिप्ट बनाने के लिए, मैंने एक लुआ सिंटैक्स हाइलाइटिंग प्लगइन स्थापित किया और एक आइटम टेम्पलेट बनाया ताकि मैं प्रोजेक्ट फ़ाइल पर राइट क्लिक करके और "नया आइटम-> लुआ स्क्रिप्ट" चुनकर नई स्क्रिप्ट बना सकूं। यह काफी अच्छी तरह से काम करता है।क्या विजुअल स्टूडियो 2010 में फ़ाइलों को बनाते समय स्वचालित रूप से "आउटपुट निर्देशिका में कॉपी करें" सेट करना संभव है?

स्क्रिप्ट को खोजने के लिए प्रोग्राम के लिए, उन्हें बिल्ड स्थान के उसी निर्देशिका (या उपनिर्देशिका) में रखा जाना चाहिए। यह वही है जहां मैं उन्हें चाहता हूं, लेकिन ऐसा करने के लिए, मुझे अपनी प्रत्येक नई फ़ाइल के लिए "आउटपुट निर्देशिका में कॉपी करें" सेटिंग बदलनी होगी।

क्या इस विकल्प की डिफ़ॉल्ट सेटिंग बदलने का कोई तरीका है? अभी यह "कॉपी न करें" के लिए डिफ़ॉल्ट है। मैं केवल one other question को अनिवार्य रूप से एक ही चीज़ पूछ सकता था लेकिन वहां दिए गए एकमात्र उत्तर में एक पोस्ट-बिल्ड इवेंट का सुझाव दिया गया था जो सभी फ़ाइलों को एक ही स्थान के साथ एक निर्धारित स्थान पर कॉपी कर रहा था। मैं वास्तव में ऐसा नहीं करना चाहता क्योंकि लक्ष्य गंतव्य बदल सकता है या अधिक लक्ष्य जोड़े जा सकते हैं (और अतिरिक्त घटनाओं की आवश्यकता होगी?) और मैं उस सेटिंग को प्रति-फ़ाइल आधार पर बदलना चाहता हूं।

यह केवल एक सुविधा समस्या है, क्योंकि मैं प्रत्येक फ़ाइल के लिए मैन्युअल रूप से उस विकल्प को बदल सकता हूं, लेकिन बाकी प्रक्रिया को स्वचालित करने में सक्षम होने के कारण, मैं उम्मीद कर रहा था कि मैं इसे अंतिम विवरण भी स्वचालित कर सकता हूं। > खिड़की जोड़ें -

उत्तर

4

आप टेम्पलेट के लिए एक IWizard संदर्भ जोड़ने के लिए सक्षम होना चाहिए, इस लिए जब आप फ़ाइल में ठीक क्लिक चलेंगे। आपको vstemplate फ़ाइल में add the assembly and type की आवश्यकता होगी।

RunFinished या संभवतः ProjectItemFinishedGenerating विधि लागू करें। इसके बाद आप .. EnvDTE वस्तु दृश्य स्टूडियो द्वारा उजागर मानक दृश्य स्टूडियो तानाना मॉडल का उपयोग कर समाधान में किसी भी आइटम हेरफेर करने के लिए उपयोग कर सकते हैं

The following code snippit (ओपन सोर्स टी -4 उपकरण बॉक्स से) दिखाता है कि यह गुण सेट करने के लिए।

/// <summary> 
    /// Sets the known properties for the <see cref="ProjectItem"/> to be added to solution. 
    /// </summary> 
    /// <param name="projectItem"> 
    /// A <see cref="ProjectItem"/> that represents the generated item in the solution. 
    /// </param>   
    /// <param name="output"> 
    /// An <see cref="OutputFile"/> that holds metadata about the <see cref="ProjectItem"/> to be added to the solution. 
    /// </param> 
    private static void SetProjectItemProperties(ProjectItem projectItem, OutputFile output) 
    { 
     // Set "Build Action" property 
     if (!string.IsNullOrEmpty(output.BuildAction)) 
     { 
      ICollection<string> buildActions = GetAvailableBuildActions(projectItem);    
      if (!buildActions.Contains(output.BuildAction)) 
      { 
       throw new TransformationException(
        string.Format(CultureInfo.CurrentCulture, "Build Action {0} is not supported for {1}", output.BuildAction, projectItem.Name)); 
      } 

      SetPropertyValue(projectItem, "ItemType", output.BuildAction); 
     } 

     // Set "Copy to Output Directory" property 
     if (output.CopyToOutputDirectory != default(CopyToOutputDirectory)) 
     { 
      SetPropertyValue(projectItem, "CopyToOutputDirectory", (int)output.CopyToOutputDirectory); 
     } 

     // Set "Custom Tool" property 
     if (!string.IsNullOrEmpty(output.CustomTool)) 
     { 
      SetPropertyValue(projectItem, "CustomTool", output.CustomTool); 
     } 

     // Set "Custom Tool Namespace" property 
     if (!string.IsNullOrEmpty(output.CustomToolNamespace)) 
     { 
      SetPropertyValue(projectItem, "CustomToolNamespace", output.CustomToolNamespace); 
     }  
    } 
+0

धन्यवाद! ऐसा लगता है कि यह काम कर सकता है, लेकिन क्या आपके पास एक उदाहरण या ट्यूटोरियल का लिंक होना है? मैं http://msdn.microsoft.com/en-us/library/ms185301.aspx पर ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं लेकिन मुझे प्रक्रिया में थोड़ा मुश्किल लग रहा है। मुझे एक विकल्प खोजने में कठिनाई भी हो रही है जो 'आउटपुट निर्देशिका में कॉपी करें' सेटिंग को नियंत्रित करता है। आपने EnvDTE ऑब्जेक्ट का उल्लेख किया है, इसलिए मुझे लगता है कि यह EnvDTE.ProjectItem.Properties संग्रह में निहित है। यह पहली बार है जब मैंने एक संपादक एक्सटेंशन लिखना देखा है, और ऐसा लगता है कि इस सामान के लिए प्रलेखन थोड़ा सा स्पैस है। –

+0

T4Toolbox ओपन सोर्स प्रोजेक्ट – jessehouwing

+0

से कोड नमूना जोड़ा गया खूबसूरती से काम किया। उस कोड नमूने में काफी मदद की। धन्यवाद! –