.NET

2009-11-18 2 views
6

में सापेक्ष फ़ाइल पथों के साथ काम करना मेरे पास एक सी # प्रोजेक्ट है जहां मैं कुछ संसाधन शामिल करता हूं जिन्हें मुझे उरी-क्लास का उपयोग करने के लिए संदर्भित करने की आवश्यकता है। इस विशिष्ट समस्या के लिए मेरे पास प्रोजेक्ट की जड़ में "शेडर्स" फ़ोल्डर में कुछ शेडर्स लगाए गए हैं, लेकिन मुझे यह समस्याएं छवियों जैसे इत्यादि जैसी अन्य समस्याएं हैं। अब तक मैंने एक निश्चित समाधान का उपयोग किया है पूर्ण पथ, और यह सुनिश्चित करना कि फ़ाइल उस स्थान पर मौजूद है। कहने की जरूरत नहीं है - यह एक अच्छा समाधान नहीं है, और यह लंबे समय तक काम नहीं करेगा ....NET

तो, मैं अपने संसाधनों को संदर्भित करने के लिए सापेक्ष पथ का उपयोग कैसे कर सकता हूं? मुझे लगता है कि मेरा प्रश्न दो गुना है:

  • पहला; मैं अपने डीबग फ़ोल्डर से सापेक्ष पथ को प्रोजेक्ट फ़ोल्डर में संदर्भित नहीं करना चाहता हूं। मैं चाहता हूं कि फ़ाइल को बिल्ड फ़ोल्डर में कॉपी किया जाए। शेडर्स परियोजना में शामिल हैं, लेकिन जाहिर है यह पर्याप्त नहीं है। बिल्डिंग के दौरान फाइलों की प्रतिलिपि बनाने के लिए मैं प्रोजेक्ट को कैसे बताऊं? या; इसे हल करने का आम तरीका क्या है?

  • दूसरा; जब मेरे पास "बिल्डर्स" फ़ोल्डर मेरे बिल्ड फ़ोल्डर में कॉपी किया गया है - मैं यूरी सिंटैक्स का उपयोग करने के लिए क्या उपयोग करता हूं उदा। "myShader.ps" इस फ़ोल्डर के अंदर रखा गया है? क्या मैं बस file:///Shaders/myShader.ps कह सकता हूं?

उत्तर

6

अपने अनुप्रयोगों निर्देशिका में से किसी उरी प्राप्त करने के लिए कार्य करें:

Uri baseUri = new Uri(System.Reflection.Assembly.GetEntryAssembly().Location); 
Uri shader = new Uri(baseUri, "shaders/test.ps"); 
+0

यह अजीब बात है कि हमें प्रतिबिंब का सहारा लेना है। सभी वातावरण इसे स्वीकार नहीं करेंगे। इसके अलावा (हालांकि हम यहां सटीक प्रश्न से बह रहे हैं) क्या होगा यदि यूआरआई असेंबली स्थान के सापेक्ष होने के बजाय, जो भी निर्देशिका वर्तमान है, के सापेक्ष है? –

3

पहले करने के लिए उत्तर:

कैसे जब निर्माण मैं परियोजना फ़ाइलों की प्रतिलिपि बनाने बताऊँ?

परियोजना के लिए फ़ाइल जोड़ें, सही क्लिक करें, Properties और Always Copy को Copy to Output Directory बदल जाते हैं।

+0

मैं उलझन में हूँ .. मैं पहले से ही ऐसा किया है, लेकिन यह कॉपी नहीं किया। हालांकि, "बिल्ड एक्शन" को "संसाधन" पर सेट किया गया था। मैंने कुछ और परीक्षण किया, और "कोई नहीं" या "एम्बेडेड संसाधन" फाइल कॉपी करता है। धन्यवाद! उपयोग करने के लिए उचित "बिल्ड एक्शन" क्या है? – stiank81

+0

बिल्डएक्शन कोई नहीं है। –

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