जब मैं टी 4 संपादित करता हूं, तब भी जब भी मैं दूसरी फ़ाइल में स्विच करता हूं तो स्क्रिप्ट निष्पादित की जाती है। यह त्वरित सरल स्क्रिप्ट के लिए ठीक है, लेकिन कुछ स्क्रिप्ट को निष्पादित करने में लंबा समय लगता है। क्या इस व्यवहार को अक्षम करने का कोई तरीका है? मैं चाहता हूं कि स्क्रिप्ट केवल तभी चलें जब मैं टी 4 फ़ाइल को सहेजता हूं या मैन्युअल रूप से मेनू से "कस्टम टूल चलाएं" चुनता हूं।हर बार जब मैं किसी अन्य टैब पर स्विच करता हूं तो टी 4 को निष्पादित करने से कैसे रोकें?
उत्तर
टी 4 सी #/वीबी प्रोजेक्ट सिस्टम में कस्टम टूल मैकेनिज्म (IVsSingleFileGenerator) से जुड़ा हुआ है, जो इसे सहेजने, कस्टम टूल मेनू चलाने और टैब स्विचिंग व्यवहार पर चलाने के लिए चलाता है - सभी कार्यान्वयन की कीमत के लिए एक साधारण इंटरफेस।
दुर्भाग्य से इसका मतलब है कि टी 4 के उन व्यवहारों पर अनिवार्य रूप से कोई नियंत्रण नहीं है, जो कस्टम उपकरण के लिए मानक हैं।
निर्माण विकल्प पर टी 4 करने के लिए वी 4 मॉडलिंग और विजुअलाइजेशन एसडीके में टी 4 एमएसबिल्ड समर्थन का उपयोग करने के लिए एक विकल्प हो सकता है और फिर कस्टम टूल को अक्षम कर सकता है। मैं अपने सहयोगी से पूछताछ करता हूं जिसने msbuild समर्थन बनाया है यदि यह टेम्पलेट के सेट की पहचान करने के लिए कस्टम उपकरण का उपयोग करता है या नहीं और थ्रेड पर वापस पोस्ट करता है।
फ़ाइल सहेजी जाने पर टी 4 टेम्पलेट निष्पादित किए जाते हैं। यदि आपके पास फ़ाइल से दूर टैब होने पर ऑटो-सेव करने के लिए वीएस सेटअप है जो व्यवहार की व्याख्या कर सकता है। यह निर्धारित करने के लिए कि क्या आप टैब दूर करते हैं, वीएस फ़ाइल को सहेज रहा है या नहीं, यह निर्धारित करने के लिए अपने वीएस कॉन्फ़िगरेशन की समीक्षा करें।
मेरे पास एक ही समस्या थी। मैंने टेम्पलेट को किसी अन्य प्रोजेक्ट में विभाजित करने और आउटपुट फ़ाइलों को साझा करने के बारे में इस आलेख http://msdn.microsoft.com/en-us/library/ee789839.aspx में दिए गए चरणों का पालन किया।
यह विवरण कैसे बंद करने की TextTemplatingFileGenerator सही टेम्पलेट क्लिक करके और CustomTool संपत्ति को साफ़ करके टेम्पलेट से जुड़ी उपकरण। यह सहेजे जाने पर टेम्पलेट जनरेटिंग कोड रोकता है ... लेकिन टैब स्विच करते समय यह अभी भी चलता है!
मुझे लगता है कि यह गोल करने का एकमात्र तरीका आपके सभी टेम्पलेट कोड को एक अलग फ़ाइल में एक अलग प्रत्यय (जैसे ttinclude या t4 या कुछ) के साथ स्थानांतरित करना होगा और फिर इस फ़ाइल को अपनी वास्तविक T4 टेम्पलेट फ़ाइल में शामिल करना होगा निर्देश शामिल करें। इस तरह आपको टेम्पलेट को संपादित करने के लिए उस फ़ाइल को कभी भी खोलने की आवश्यकता नहीं होगी, इसलिए यह दुर्घटना से नहीं चलेगा।
तो एक फ़ाइल में MyTemplate.tt कहा जाता है:
<#@ template language="VB" debug="false" hostspecific="true"#>
<#@ include file="Include\MyTemplateCodeBehind.t4" #>
<#@ output extension=".vb"#>
<# ' Nothing to see here! #>
MyTemplateCodeBehind.t4 बुलाया अन्य फ़ाइल में जबकि:
<#@ template language="VB" debug="false" hostspecific="true"#>
<#
For Each something In somecollection
#>
<#= something.PrintMyCode() #>
<#
Next
#>
संकलन निर्देशों के बाद सही प्रयास करें, विधि से बाहर निकलने के लिए एक वापसी जोड़ने
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF6.Utility.CS.ttinclude"#><#@
output extension="Repository.cs"#><#
return string.Empty; //<-- add this line!!!
...
मैं क्या कर रहा हूँ (शायद एक बुरा विधि) टीटी फ़ाइल एक अपवाद लाइन की तरह की शुरुआत में लिख रहा है:
<# throw new Exception(); #>
क्योंकि मैं एक अपवाद प्रक्रिया रोक फेंक और जब मैं सब काम मैं खत्म बस इस लाइन को हटाना है। :)
- 1. JQuery UI टैब: मैं किसी अन्य पृष्ठ से सीधे किसी टैब पर कैसे जा सकता हूं?
- 2. हर बार जब मैं डिवाइस
- 3. हर बार जब यह हिट करता है तो विंडबग में निष्पादन से लाइन को कैसे छोड़ें?
- 4. जावास्क्रिप्ट को दो बार निष्पादित करने से रोकें
- 5. जब मैं किसी तत्व पर क्लिक करता हूं तो मैं जावास्क्रिप्ट को कैसे चलाता हूं?
- 6. हर बार जब मैं प्रोग्राम चलाता हूं
- 7. किसी ब्राउज़र के पता बार से जावास्क्रिप्ट को निष्पादित करने से कैसे रोकें?
- 8. एसिंक्टास्क को कई बार निष्पादित करने से रोकें
- 9. हर बार जब मैं पुन: नियोजित करता हूं तो मुझे कनेक्शन पूल को फ्लश करने की आवश्यकता क्यों होती है?
- 10. जब उपयोगकर्ता ब्राउज़र टैब स्विच करता है
- 11. जावा: जब मैं किसी अन्य धागे से इंटरप्ट करता हूं, तो मैं थ्रेड पर इंटरप्टेड एक्सेप्शन कैसे पकड़ूं?
- 12. हर बार जब मैं मॉलोक का उपयोग करता हूं तो मुझे चेतावनी क्यों मिलती है?
- 13. हर किसी को है, लेकिन कक्षा टी
- 14. विज़ुअल स्टूडियो को प्रत्येक निर्माण के बाद कोड विश्लेषण टैब पर स्विच करने से कैसे रोकें?
- 15. एक्लिप्स पर एंड्रॉइड हर बार जब मैं main.xml
- 16. क्या कोई तरीका है कि मैं iisexpress स्टार्टअप देरी से बच सकता हूं जब हर बार जब मैं बिल्ड करता हूं तो डीएलएल लोड करता है?
- 17. ExtJS 4 के टैबपैन में, जब भी मैं टैब पर क्लिक करता हूं तब टैबबल ईवेंट को कैसे पकड़ें?
- 18. आईफोन 4 टैब बार आइकन
- 19. जब मैं पहली बार टैबहोस्ट के टैब को खोलता हूं तो रेस्यूम क्यों कहा जाता है?
- 20. आईफोन - हर बार जब मैं इसे
- 21. .NET में किसी अन्य धागे को कैसे रोकें, जब थ्रेड कंसोल निष्पादित कर रहा है। रीडलाइन?
- 22. जब मैं किसी सूची से तत्व निकालने का प्रयास करता हूं तो मैं ValueError को कैसे अनदेखा कर सकता हूं?
- 23. जब मैं ऑनपेयरऑप्शनमेनू मेनू मेनू प्रविष्टियों को स्विच करता हूं तो मैं एक्शनबार को रीफ्रेश कैसे कर सकता हूं?
- 24. हर बार जब मैं "प्ले" हिट करता हूं तो वीएस को मेरी सभी परियोजनाओं का पुनर्निर्माण क्यों करना पड़ता है?
- 25. एक्सकोड 4 बिल्ड स्कीम हर बार खराब हो जाती है जब मैं गिट
- 26. "हर" टैब
- 27. जब मैं जावास्क्रिप्ट निष्पादित करता हूं तो एंड्रॉइड वेबव्यू पर sotfkeyboard गायब हो जाता है
- 28. एलडीए मॉडल हर बार अलग-अलग विषयों को उत्पन्न करता है जब मैं उसी कॉर्पस पर ट्रेन करता हूं
- 29. जब मैं jpanel (जावा) पर क्लिक करता हूं तो फ़ंक्शन को कैसे कॉल करें?
- 30. क्या मैं हर बार Java SwingWorker का नया उदाहरण बनाना चाहता हूं जब मैं doInBackground() को आमंत्रित करना चाहता हूं?
मैं टी 4 टूलबॉक्स का उपयोग करता हूं जो एकाधिक फाइलें उत्पन्न करता है और इस प्रकार समाधान को संशोधित करता है। मुझे यकीन नहीं है कि यह एमएसबिल्ड में काम करेगा। बिल्डिंग समय पर केवल टी 4 चलाना मेरे लिए एक विकल्प नहीं है, जब भी मैं टी 4 फाइल को सहेजता हूं, मैं परिणामों को अपरिहार्य रूप से देखना चाहता हूं। लेकिन उन लोगों के लिए एमएसबिल्ड का उपयोग करने के बारे में जानकारी प्रदान करने के लिए आपका स्वागत है जो इस प्रश्न को पाते हैं। यह उनके लिए उपयोगी हो सकता है। – Athari
मुझे लगता है - हमने दोनों को एकीकृत करने की कोशिश नहीं की है - ओलेग अच्छी तरह से कर सकता है। मैंने बस पुष्टि की है कि कस्टम उपकरण अब msbuild के लिए आवश्यक नहीं है, लेकिन इसके बजाय आपको आइटम प्रकार को अपनी csproj/vbproj फ़ाइल में किसी भी/compile से T4Transform या T4Preprocess में बदलने की आवश्यकता होगी। आउटपुट फाइलें अब आपके प्रोजेक्ट का हिस्सा नहीं रहेंगी। मेटाडेटा है जो उन्हें इंटरमीडिएट ओबीजे फ़ोल्डर या कहीं भी समान रीडायरेक्ट कर सकता है। – GarethJ