2008-11-11 7 views
8

मेरे पास एक टी 4 टेम्पलेट है जो कक्षाओं को xml फ़ाइल से उत्पन्न करता है।टी 4 टेम्पलेट में मनमाने ढंग से फ़ाइल पर निर्भरता कैसे जोड़ें?

मैं XML फ़ाइल और टेम्पलेट फ़ाइल के बीच निर्भरता कैसे जोड़ सकता हूं ताकि जब xml फ़ाइल संशोधित हो, तो टेम्पलेट को संदर्भ मेनू से "कस्टम टूल चलाएं" चुनने के बिना स्वचालित रूप से फिर से चालू कर दिया जाए?

उत्तर

4

मुझे विश्वास नहीं है कि टी 4 बाह्य निर्भरता के आधार पर स्वचालित टेम्पलेट परिवर्तन का समर्थन करता है। मैं मार्क से सहमत हूं - अगर आपके पास केवल एक बाहरी फ़ाइल है, तो आप अपनी एक्सएमएल फ़ाइल के लिए एक कस्टम "कस्टम टूल" बना सकते हैं या बस ttxgen का उपयोग कर सकते हैं। हालांकि, मुझे नहीं लगता कि यह दृष्टिकोण एक परिदृश्य तक स्केल करता है जहां टी 4 टेम्पलेट एक से अधिक फाइलों पर निर्भर करता है। इसे संभालने के लिए आपको एक विजुअल स्टूडियो पैकेज बनाना पड़ सकता है।

+0

क्या VS2010 से ttxgen का उपयोग करने का कोई तरीका है? –

3

उपकरण निष्पादित करने में कितना समय लगता है? एक आलसी विकल्प बस csproj को संपादित करना हो सकता है जैसे कि हमेशा निर्माण के दौरान उपकरण चलाता है (संभवतः <Exec ... /> या कस्टम targets फ़ाइल के माध्यम से) - बेशक, यह निष्पादित करने के लिए त्वरित होने पर निर्भर करता है।

एक और तरीका एक शिम लिखना होगा जो वीएस में "कस्टम टूल" के रूप में काम करता है, और केवल सही एक्स के साथ मौजूदा एक्स (या जो भी) को कॉल करता है। तुच्छ नहीं, लेकिन करने योग्य (see here) - मुझे विश्वास है कि यह माना जाता है कि यह परिवर्तन पहचान के साथ काफी अच्छी तरह से खेलता है। यह वास्तव में एक मौजूदा परियोजना के लिए मेरी चीजों की सूची में है, इसलिए मुझे जल्द ही पता चल जाएगा ...

0

क्या आपने <#@ xsd का उपयोग करने का प्रयास किया है?

1

आप AutoTT विजुअल स्टूडियो एक्सटेंशन का उपयोग कर सकते हैं।

यह एक्सटेंशन ट्रिगर को कॉन्फ़िगर करने की अनुमति देता है जो एक T4 टेम्पलेट चलाएगा।

संभावित ट्रिगर्स में से एक फ़ाइल परिवर्तन है। ऑटोटीटी पृष्ठ में नमूना कॉन्फ़िगरेशन फ़ाइल में, ट्रिगर्स के लिए नियमित अभिव्यक्ति निर्दिष्ट फ़ोल्डर्स (नियंत्रक, सामग्री) में सभी फ़ाइलों से मेल खाती है, लेकिन आप इसे बदल सकते हैं ताकि यह केवल एक विशिष्ट फ़ाइल के साथ चल सके।

Chirpy ऐसा करने का एक और विकल्प है। और T4 Regenerator, जो इसे एक अलग तरीके से करता है।

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