2012-06-18 18 views
9

के अंदर कक्षा का उपयोग करें, मुझे अपने समाधान में रहने वाले दोनों टी 4 टेम्पलेट के अंदर एक कक्षा का उपयोग करने में सक्षम होना चाहिए। मेरे पास नाम Container.cs में एक वर्ग है। मेरे टेक्स्ट टेम्पलेट में मैं Container कक्षा तक पहुंचने में सक्षम होना चाहता हूं। मैं यह कैसे कर सकता हूं पर कोई विचार। इस तरह मूल रूप से कुछ:एक टी 4 टेम्पलेट

<#@ template language="C#" #>

<# var container = new Container() #>

+0

कृपया अपना कोड –

उत्तर

15

सामान्य तौर पर, आप वास्तव में अपने टेम्पलेट में कंटेनर वर्ग की कार्यक्षमता का उपयोग करने की आवश्यकता है, तो आप विधानसभा कि अपनी परियोजना बनाने जा रहा है लोड करने के लिए चाहता हूँ। यह एक परिपत्र निर्भरता पेश करता है, क्योंकि आपको उस असेंबली में शामिल होने वाले कोड को पुन: उत्पन्न करने के लिए अपनी असेंबली के एक निर्मित संस्करण की आवश्यकता होती है, इसलिए इसके बारे में जागरूक रहें।

आप VS2010 का उपयोग कर रहे या इसके बाद, आप की तरह कुछ का उपयोग कर सकेंगे हैं:

<#@ assembly name="$(TargetPath)" #> 
<#@ import namespace="Your.Namespace" #> 

और फिर अपने कंटेनर वर्ग का उपयोग करें।

यदि आपके पास VS2010SP1 या इससे ऊपर है, तो इससे आपको स्मृति में उस असेंबली को लॉक करने के साथ कोई समस्या नहीं होगी, लेकिन यदि आप उससे पहले हैं, तो आपको अपनी पीढ़ी के पुनर्निर्माण से पहले प्रत्येक पीढ़ी के बाद विजुअल स्टूडियो को पुनरारंभ करना होगा परियोजना।

+2

दिखाएं T4 टेम्पलेट्स में एक और विकल्प [File.ReadAllBytes()] (http://msdn.microsoft.com/en-us/library/system.io.file.readallbytes.aspx) है और तब [विधानसभा.लोड()] (http://msdn.microsoft.com/en-us/library/h538bck7.aspx) बाइट सरणी स्मृति में। इसके लिए योग्य वर्गों 'new namespaces.class() 'को पूरा करने की आवश्यकता होगी, लेकिन इसका मतलब है कि आपको प्रत्येक बार विजुअल स्टूडियो को पुनरारंभ करने की आवश्यकता नहीं है। –

+0

धन्यवाद आदमी, यह वास्तव में बहुत अच्छा काम करता है। – user1396149

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