2010-05-28 5 views
10

मैं एक टी -4 टेम्पलेट एक एक्सएमएल फ़ाइल को खोलता है और यह सामग्री का उपयोग करता है एक कोड विरूपण साक्ष्य उत्पन्न करने के लिए है कि चलाने के लिए कोशिश कर रहा हूँ। हालांकि, मैं एक त्रुटि संदेश जब मैं निम्न संदेशटी 4 का उपयोग कर सापेक्ष पथ पर फ़ाइल कैसे खोलें?

दिखा रहा है परिवर्तन चल रहा है

<#@ template debug="false" hostspecific="false" language="C#" #> 
<#@ assembly name="System.Xml.dll" #> 
<#@ assembly name="System.Xml.Linq.dll" #> 
<#@ import namespace="System.IO" #> 
<#@ import namespace="System.Xml" #> 
<#@ import namespace="System.Xml.Linq" #> 
<#@ output extension=".cs" #> 
namespace ConsoleApplication1 
{ 
<# XElement fragment = XElement.Load("data.xml"); #> 
... 

विजुअल स्टूडियो 2010 त्रुटि नीचे दी गई सूची से मिलता-जुलता एक टी -4 टेम्पलेट चलाने का प्रयास हो रही है: सिस्टम IO.FileNotFoundException: फ़ाइल 'सी: \ प्रोग्राम फ़ाइलें \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ data.xml' नहीं मिल सका।

यह उस पथ पर फ़ाइल खोलने का प्रयास कर रहा है जहां TextTemplateFileGenerator कस्टम टूल चलता है। मैं इसे अपने प्रोजेक्ट पथ से संबंधित फाइल खोलना चाहता हूं, क्योंकि मेरी टीम के अन्य डेवलपर्स अलग-अलग फ़ोल्डर संरचनाओं का उपयोग करते हैं। क्या किसी को पता है कि यह पूरा करने के लिए कुछ संभव है?

उत्तर

20

"सत्य" पर टेम्पलेट निर्देश में होस्टस्पेसिफिक विकल्प बदलें और Host.ResolvePath ("data.xml") पर कॉल करें।

+0

यह काम किया, धन्यवाद! –

+2

इसके लायक होने के लिए, यह यहां प्रलेखित है: http://msdn.microsoft.com/en-us/library/bb126478.aspx – MrSlippers

0

मुझे एक ही समस्या थी लेकिन होस्ट। रीसोल्वपाथ मेरे लिए काम नहीं करता क्योंकि मेरे सापेक्ष पथ में ".. \ .." था। मैंने इसे करने के द्वारा इसके आसपास काम किया:

string ttpath = this.Host.TemplateFile; 
string resolvedPath = Path.GetFullPath(Path.GetDirectoryName(ttpath) + @"..\..\<Path To File>");