2011-01-24 10 views
16

का उपयोग कर एक टी 4 टेम्पलेट चला रहा है मेरे पास टी 4 टेम्पलेट (mycode.tt) है जो एक सीएस फ़ाइल उत्पन्न करता है। मैं आमतौर पर टीटी फ़ाइल पर राइट क्लिक करता हूं और RunCustomTool का चयन करता हूं जो आंतरिक रूप से एक एक्सएमएल फ़ाइल लेता है और मेरे लिए कोड उत्पन्न करता है। अब मैं एक सी # विंडोज अनुप्रयोग का उपयोग कर कस्टम उपकरण चलाने के लिए चाहता हूँ। तो एक बटन पर क्लिक करें जिसे मैं कस्टम टूल चलाने के लिए चाहता हूं। क्या सी # से कस्टमटूल चलाने के लिए संभव है।सी #

संपादित करें:

2 टीटी फ़ाइलों और उनमें से एक एक codebehind सीएस फ़ाइल नहीं है है। लेकिन किसी के पास एक .cs फ़ाइल संलग्न है और मैं दूसरी फ़ाइल की TransformText() विधि को पहली .tt फ़ाइल से आविष्कार कर रहा हूं। तो मुझे पहली फाइल को आमंत्रित करने की ज़रूरत है। इसलिए मैं TransformText() विधि का उपयोग नहीं कर सकता। क्या पाठ टेम्पलेट फ़ाइल को गतिशील रूप से कॉल करने का कोई तरीका है?

उत्तर

7

मैं उपरोक्त मार्ग की सिफारिश करता हूं जैसा कि ऊपर उत्तर दिया गया है @jb_।

वैकल्पिक रूप से, यदि आपको अपने कस्टम सी # एप्लिकेशन के उपयोग के लिए संकलन चरण के बिना अभी भी संपादन करने के लिए अपने टेम्पलेट की आवश्यकता है, और एप्लिकेशन केवल विजुअल स्टूडियो के साथ मशीनों पर तैनात किया जाएगा, तो आप एक कस्टम होस्ट लिख सकते हैं।

http://msdn.microsoft.com/en-us/library/bb126519.aspx

आप `` TextTemplatingFilePreprocessor` को TextTemplatingFileGenerator` से गुण में कस्टम उपकरण को बदल सकता है एक मौजूदा टेम्पलेट के लिए
17

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

यह "TestTemplate.tt" और कैसे आप इसे अपने कोड में प्रयोग करते हैं नामक एक preprocessed पाठ टेम्पलेट की एक छोटी सी उदाहरण है:

टीटी-फ़ाइल:

<#@ template language="C#" #> 
Some output. 

कोड:

using System; 
using System.Diagnostics; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      TestTemplate testTemplate = new TestTemplate(); 
      Debug.Print(testTemplate.TransformText()); 
     } 
    } 
} 
+5

। –

+0

आप पैरामीटर कैसे प्रदान करते हैं? – Georg