निष्पादित कर रही है मेरे ऐप्स के लिए, मैं कुछ कॉन्फ़िगरेशन फ़ाइल को एक्सएमएल में असेंबली (एक्सई), और कुछ अन्य अस्थायी फ़ाइलों को उद्देश्य के लिए संग्रहीत करने के लिए संग्रहीत करता हूं।निर्देशिका प्राप्त करने का सबसे अच्छा तरीका क्या है जिसमें से एक असेंबली
मुझे ".\\"
और Application.StartupPath
के साथ कुछ quirk मिला।
मैं प्रयोग कर रहे
String configPath = ".\\config.xml";
जब तक मैं OpenFIleDialog
बुलाया अन्य फ़ोल्डर में कुछ फ़ाइलों को खोलने के लिए यह ठीक काम करता है, में विफल रहा है ऊपर बयान। स्पष्ट रूप से "। \" "CurrentDirectory" का जिक्र कर रहा है, जो हर बार जब हम किसी अन्य फ़ोल्डर में ब्राउज़ करते हैं तो बदलता है।
कुछ बिंदु पर, मैं
String configPath = Path.Combine(Application.StartupPath + "config.xml");
उपयोग कर रहा था कुछ बिंदु पर, जब मैं Process.Start()
का उपयोग करके किसी अन्य फ़ोल्डर से इस विधानसभा पर अमल करने की जरूरत है, चीजों को अलग गिर करने के लिए शुरू करते हैं। स्पष्ट रूप से कार्यशील निर्देशिका ठीक से सेट नहीं है, और Application.StartupPath
वास्तव में उस निर्देशिका की बजाय कार्यशील निर्देशिका का जिक्र कर रहा है जिसकी असेंबली निष्पादित हो रही है, जैसा कि मैंने माना है। तो मुझे असेंबली की निर्देशिका में कार्य निर्देशिका सेट अप करने के लिए ProcessInfo का उपयोग करना होगा। जब मैं वीएसटीओ लिख रहा था तो मुझे इसके साथ भी समस्या थी।
तो, मेरा सवाल यह है कि, असेंबली निष्पादित करने वाली वर्तमान निर्देशिका को प्राप्त करने के लिए सबसे अच्छा, सरल और सबसे आश्वस्त तरीका क्या है, बिना किसी कर्कश (या गलतफहमी) के मैंने जो अभी उल्लेख किया है?
संपादित करें: पर AppDomain.BaseDirectory MSDN के अनुसार, ऐसा लगता है कि यह क्रम है, जो मैं नहीं करना क्या चाहते दौरान परिवर्तन किया जा सकता है (बस स्पष्ट करने के लिए: मैं निर्देशिका जो विधानसभा रहते
संपादित पाने के लिए होती , नहीं कि मैं बेस डायरेक्टरी को बदलना नहीं चाहता हूं, बल्कि, जब मैं यह सुनिश्चित करने के बिना इसे पुनर्प्राप्त करता हूं कि यह बदला गया है या नहीं)
संपादित करें: मैंने देखा है कि एक संबंधित प्रश्न बहुत पहले पोस्ट किया गया था। What would cause the current directory of an executing app to change?
उत्तर के लिए धन्यवाद दोस्तों।
क्या इस विधि में प्रतिबिंब शामिल है? प्रदर्शन प्रभाव के रूप में? – faulty
मुझे यकीन नहीं है कि "प्रतिबिंब" और "प्रदर्शन प्रभाव" के बीच 1: 1 सहसंबंध है; यह प्रतिबिंब नामस्थान में है लेकिन असल में असेंबली में प्रतिबिंबित नहीं होता है - यह मेटाडेटा का उपयोग कर रहा है जो इसे पहले से ही जानता है। – GalacticCowboy
हाँ ... इसे अपने सभी CPU चक्रों को चूसने और अपने ज़ीऑन ऑक्टा-कोर को एचपी 12 सी में बदलने के लिए इस तरह केवल एक कॉल करें। 'क्योंकि किसी को भी पता है कि प्रतिबिंब स्पॉन-ऑफ-शैतान-और-रिपोर्टर-ऑल-द-इज़-ट्रूली-एविल-इन-द-वर्ल्ड (नाम के लिए स्कॉट हंसेलमैन को क्रेडिट :)) –