2011-05-10 11 views
23

क्या किसी को एक .tt फ़ाइल में पता है, जहां कोड। VsNamespaceSuggestion() से इसका नामस्थान मिलता है?टी 4 जनरेशन: VsNamespaceSuggestion() कहां से खींचता है?

मुझे कोई समस्या है जहां मुझे समाधान का नामस्थान बदलना पड़ा, और मैं कसम खाता हूं कि मैंने इसे हर जगह बदल दिया है (फ़ोल्डर नाम, फ़ाइल नाम, प्रोजेक्ट नाम, प्रोजेक्ट गुण, असेंबली जानकारी इत्यादि)। लेकिन जब .tt फ़ाइल चलती है, तो यह हमेशा पुरानी नेमस्पेस को इसके जेनरेट किए गए वर्गों में वापस रखती है। मुझे बताया गया है कि यह ईएफ मॉडल से आता है, लेकिन मुझे वहां कुछ भी नहीं दिखाई देता है जो नामस्थान दिखाता है (या तो डिजाइनर/गुणों में या नोटपैड में .edmx फ़ाइल खोलकर)।

कोई विचार? एक हैक के लिए, मैं बस अगली पंक्ति में नामस्थान के साथ इसे ओवरराइड कर रहा हूं:

string namespaceName = code.VsNamespaceSuggestion(); 
namespaceName = "Desired.Namespace"; //HACK: 

उत्तर

1

मुझे लगता है कि मैंने समस्या ठीक कर दी है। मैंने सुनिश्चित करने के लिए केवल सारा की टिप्पणी के बाद सभी परियोजनाओं के डिफ़ॉल्ट नामस्थानों को दोबारा जांच लिया, लेकिन सबकुछ वास्तव में सही था।

"सभी फाइलें खोजें" कुछ भी नहीं बदला। मैंने एजेंट रान्सैक नामक एक छोटे से मुक्त टूल का उपयोग किया, और इसे नामक टैग के साथ एक .csproj फ़ाइल मिली, जिसमें पुराना नामस्थान था। मैंने इसे बदल दिया, और यह क्या तय है।

एआर को बिन/डीबग फ़ाइलों (abosluteFileList और कैश फ़ाइलों) के समूह में पुराना नामस्थान भी मिला। मैंने उन सभी फ़ाइलों को हटा दिया ताकि वे नए नामस्थान के साथ पुन: उत्पन्न हो जाएंगे। मुझे कोई जानकारी नहीं है कि इसका कोई प्रभाव पड़ा है या नहीं।

एआर ने भी मेरी .suo फ़ाइल में उदाहरण पाए। चूंकि समस्या ठीक हो रही है, इसलिए मैंने उस फ़ाइल को नहीं हटाया (दुर्भाग्यवश, आप इसे नोटपैड में संपादित नहीं कर सकते हैं)।

54

बस यह सही समस्या थी, और मैंने जो समाधान खोजा वह यहां उल्लेख नहीं किया गया था, इसलिए मैंने सोचा कि मैं किसी भी खोज में इस लेख में आने वाले किसी की भी मदद करूंगा।

कोड-पीढ़ी * .tt फ़ाइल पर क्लिक करें जो आपकी संस्थाएं उत्पन्न कर रहा है। गुण फलक में, कस्टम टूल नामस्थान को उस नामस्थान पर सेट करें जिसे आप जेनरेट करना चाहते हैं। मेरा खाली था, इसलिए टी 4 डिफ़ॉल्ट प्रोजेक्ट नेमस्पेस + फ़ोल्डर विरासत से नामस्थान उत्पन्न कर रहा था।

+3

है कि जानकारी के लिए धन्यवाद! –

+8

+1 महान समाधान! जवाब स्वीकार किया जाना चाहिए – Seph

3

विजुअल स्टूडियो में टी 4 होस्ट इसे "नेमस्पेसहिंट" नाम का उपयोग करके कॉलकॉन्टेक्स्ट प्रॉपर्टी बैग से खींचता है।

यह मान मानक टूल के लिए निर्दिष्ट डिफ़ॉल्ट नामस्थान का उपयोग कर मानक टी 4 कस्टम टूल (सिंगलफाइल जेनरेटर) तंत्र द्वारा पॉप्युलेट किया गया है, जो या तो प्रोजेक्ट डिफ़ॉल्ट नामस्थान से निकाला गया है और प्रोजेक्ट रूट से पथ को टीटी फ़ाइल में लिया गया है या है कस्टम टूल विनिर्देश के नीचे संपत्ति ग्रिड में स्पष्ट रूप से निर्दिष्ट है (जैसा कि @ मट्टकब अपने उत्तर में कहता है)

यदि आप कोड से टी 4 सेवा का उपयोग कर रहे हैं, तो आप इसे कॉलकॉन्टेक्स्ट स्वयं सेट करके पॉप्युलेट कर सकते हैं।

2

बस छवि निम्नलिखित के रूप में * .tt फ़ाइलों के गुण संशोधित करने, और प्रभावी तुरंत .:

Default is empty