2009-11-17 10 views
7

मेरे पास एक साधारण सी # कंसोल ऐप है जो एक XML फ़ाइल में पढ़ता है जो उपयोगकर्ता को निर्दिष्ट करता है, उस पर एक एक्सएसएलटी रूपांतरण चलाता है, और परिणामों को आउटपुट करता है।आउटपुट .exe में शामिल करने के लिए .NET प्रोजेक्ट में XSLT फ़ाइल को एम्बेड करने के लिए कैसे करें?

जब मैं अपने ऐप को उपयोगकर्ताओं को वितरित करता हूं, तो मैं एक एकल .EXE फ़ाइल वितरित करना चाहता हूं। मेरे स्रोत कोड में 3 फाइलें हैं: .csproj फ़ाइल, .cs कोड फ़ाइल, और एक .xslt स्टाइलशीट।

मैं csproj कैसे स्थापित कर सकता हूं ताकि .xslt आउटपुट के भीतर "एम्बेडेड" हो और अंतिम उपयोगकर्ता द्वारा देखा या संशोधित नहीं किया जा सके?

आसान लगता है, लेकिन मैं इसे समझ नहीं सकता और Google बहुत उपयोगी नहीं है।

उत्तर

13

आप इसे अपनी असेंबली में एम्बेड कर सकते हैं।

अपने समाधान में फ़ाइल जोड़ें, एम्बेडेड संसाधन पर बिल्ड एक्शन सेट करें।

स्थान को पढ़ने के लिए आपको जिस स्थान की आवश्यकता है http://msdn.microsoft.com/en-us/library/xc4235zt.aspx असेंबली। गेटमैनिफेस्ट रिसोर्सस्ट्रीम जो आपको एक स्ट्रीम देगा जो आप एक फाइल में लिख सकते हैं या सीधे उपयोग कर सकते हैं।

यदि आप निश्चित रूप से सुनिश्चित नहीं हैं कि आपके संसाधन का नाम क्या है, तो मुझे सभी संसाधनों को सूचीबद्ध करने के लिए Assembly.GetManifestResourceNames उपयोगी मिल गया है।

+0

+1: बिल्कुल सही । –

29

अपनी प्रोजेक्ट में फ़ाइल जोड़ें, फिर फ़ाइल का चयन करें और प्रॉपर्टी विंडो पर जाएं (F4 दबाएं)। "एंबेडेड संसाधन" में बिल्ड एक्शन सेट करें। यह फ़ाइल को संसाधन के रूप में exe फ़ाइल में एम्बेड करने का कारण बन जाएगा।

using(Stream strm = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourAssemblyName.filename.xslt")) 
using (XmlReader reader = XmlReader.Create(strm)) 
{ 
    XslTransform transform = new XslTransform(); 
    transform.Load(reader); 
    // use the XslTransform object 
} 
+1

फ्रेड्रिक के उदाहरण को बढ़ाने के लिए, आप अपने एप्लिकेशन के नामस्थान को "YourAssemblyName" के रूप में उपयोग कर सकते हैं, जैसा कि ... ... GetManifestResourceStream ("This.is.my.namespace.filename.xslt")) ' – user1585514

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

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