2009-08-18 6 views
15

में टी 4 रूपांतरण और निर्माण आदेश में मेरे पास एक वीएस प्रोजेक्ट है जिसमें 1. "gener.cs" उत्पन्न करने के लिए "template.tt" पर टेक्स्टट्रांसफॉर्म चलाने की प्री-बिल्ड कार्रवाई 2. "जेनरेट की गई। सीएस "फ़ाइलों में से एक के रूप में सूचीबद्ध (संकलित करने के लिए यानी प्रोजेक्ट फ़ाइलेंविजुअल स्टूडियो

जब मैं परियोजना का निर्माण, पूर्व निर्माण कार्रवाई किया जाता है की सूची में," generated.cs "फिर से बनाया है, लेकिन वी.एस. पिछले संकलित इसका संस्करण (मुझे लगता है कि यह निर्माण प्रक्रिया की शुरुआत में स्मृति में लोड किया गया है)

क्या किया जा सकता है ताकि निर्माण नई उत्पन्न सीएस फ़ाइल का उपयोग करेगा (जो प्री-बिल्ड एक्शन में उत्पन्न होता है?

(कृपया ध्यान मेरी स्थिति में पाठ परिवर्तन इनपुट इसलिए गतिशील है डिजाइन समय में नहीं किया जा सकता है कि)

धन्यवाद।

उत्तर

4

मुझे नहीं लगता कि आपको कस्टम प्री-बिल्ड एक्शन की आवश्यकता है। बस अपनी परियोजना में ".tt" फ़ाइल जोड़ें और "कस्टम टूल" प्रॉपर्टी को "TextTemplatingFileGenerator" पर सेट करें। आप यह सुनिश्चित करना चाहते हैं कि * .generated.cs फ़ाइलों को भी परियोजना में जोड़ा गया है, लेकिन मुझे लगता है कि वीएस इसका ख्याल रखता है।

+6

यह मेरे लिए काम नहीं करता प्रतीत होता है। मुझे लगता है कि ज़्विका कह रही थी कि जब भी उनकी परियोजना बनाई जाती है तो वे टी 4 टेम्पलेट को अपने जादू का काम करना चाहते थे। यह वही है जो मैं चाहता हूं। हालांकि, मैं एएसपी.नेट एमवीसी 3 के साथ टी 4 एमवीसी का उपयोग कर रहा हूं। उदाहरण के लिए, यदि मैं एक परियोजना बनाता हूं जो बनाता है, तो एक नई फाइल जोड़ें जो टी 4 एमवीसी द्वारा उठाई जानी चाहिए, फिर परियोजना को फिर से बनाएं, मुझे नहीं लगता परिवर्तन जो टी 4 एमवीसी द्वारा किया जाना चाहिए था। मुझे .tt फ़ाइल पर राइट-क्लिक करके और कस्टम कस्टम टूल चुनकर अपडेट को स्पष्ट रूप से ट्रिगर करना होगा। –

+0

यह केवल '.tt' फ़ाइल को सहेजते समय आउटपुट उत्पन्न करेगा। –

3

अब इस समस्या का समाधान है! ओलेग सिच के पास अपने ब्लॉग पर एक पोस्ट है जिसमें विस्तार से-निर्माण-समय के काम को कैसे बनाया जाए। https://web.archive.org/web/20140116193428/http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/

असल में, तुम सिर्फ टी -4 बिल्ड लक्ष्य अपनी परियोजना फ़ाइल में शामिल और सच करने के लिए TransformOnBuild गुण सेट:

यहाँ स्रोत है।

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <PropertyGroup> 
    <TransformOnBuild>true</TransformOnBuild> 
    </PropertyGroup> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" /> 

ध्यान दें कि Microsoft.TextTemplating.targets फ़ाइल है Microsoft.CSharp.targets के बाद शामिल होने के लिए:

यहाँ प्रासंगिक अंश है।

+0

यह फाइलें उत्पन्न करता है लेकिन उनके रिश्तेदार नामस्थान को छोड़ देता है। मैं इससे कैसे उबरूं ? –