अभी तक एक और अपूर्ण समाधान (लेकिन शायद दूसरों के मुकाबले कुछ हद तक सही है):
protected static string GetSolutionFSPath() {
return System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName;
}
protected static string GetProjectFSPath() {
return String.Format("{0}\\{1}", GetSolutionFSPath(), System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
}
यह संस्करण वर्तमान प्रोजेक्ट के फ़ोल्डर को वापस कर देगा भले ही वर्तमान प्रोजेक्ट Startup Projectसमाधान के लिए न हो ।
इसके साथ पहला दोष यह है कि मैंने सभी त्रुटि जाँच को छोड़ दिया है। यह काफी आसान तय किया जा सकता है, लेकिन केवल एक समस्या होनी चाहिए यदि आप ड्राइव के लिए रूट डायरेक्टरी में अपना प्रोजेक्ट स्टोर कर रहे हैं या अपने रास्ते में एक जंक्शन का उपयोग कर रहे हैं (और यह जंक्शन समाधान फ़ोल्डर का वंशज है) तो इस परिदृश्य की संभावना नहीं है । मुझे पूरा यकीन नहीं है कि विज़ुअल स्टूडियो इन सेटअपों में से किसी भी तरह से संभाल सकता है।
एक और (अधिक संभावना) समस्या जिसे आप चला सकते हैं, वह यह है कि प्रोजेक्ट का नाम प्रोजेक्ट के लिए फ़ोल्डर के नाम से मेल खाना चाहिए ।
आपके पास एक और समस्या यह हो सकती है कि परियोजना समाधान फ़ोल्डर के अंदर होनी चाहिए। यह आमतौर पर कोई समस्या नहीं है, लेकिन यदि आपने Add Existing Project to Solutionसमाधान में परियोजना को जोड़ने के लिए विकल्प का उपयोग किया है, तो यह आपके समाधान को व्यवस्थित करने का तरीका नहीं हो सकता है।
अंत में, यदि आप आवेदन कर रहे हैं, तो आप कार्यशील निर्देशिका को संशोधित कर रहे हैं, आपको यह मान जमा करने से पहले करना चाहिए क्योंकि यह मान वर्तमान कार्यशील निर्देशिका के सापेक्ष निर्धारित होता है।
बेशक, यह सब भी इसका मतलब है कि आपको अपनी परियोजनाओं के लिए डिफ़ॉल्ट मानों में परिवर्तन नहीं करना चाहिए Build-> Output pathया Debug-> Working directoryपरियोजना गुण संवाद में विकल्प।