2010-10-21 17 views
123

के लिए पथ प्राप्त करें मैं अपना .exe पथ कैसे प्राप्त कर सकता हूं क्योंकि अगर मैं अपना .exe कॉपी करता हूं तो मुझे अपना नया पथ मिल सकता है?मेरे .exe

उत्तर

147
System.Reflection.Assembly.GetEntryAssembly().Location; 
+78

मैं केवल पथ चाहता था लेकिन मुझे लगता है कि यह आदेश मुझे पथ का पथनाम देता है। :-(दूसरी ओर GetEntryAssembly()। स्थान "फ़ाइल: //" के साथ पथ देता है - मुझे जो चाहिए वह 'AppDomain.CurrentDomain.BaseDirectory' – user799821

+12

यह यूनिट टेस्ट प्रोजेक्ट में काम नहीं करता है। GetEntryAssembly() शून्य है –

+9

System.Reflection.Assembly.GetExecutingAssembly()। स्थान लौटाता है जहां निष्पादन असेंबली वर्तमान में स्थित है, जो निष्पादित नहीं होने पर असेंबली स्थित हो सकती है या नहीं हो सकती है। छाया प्रतिलिपि विधानसभाओं के मामले में, आपको एक रास्ता मिलेगा एक अस्थायी निर्देशिका में। System.Reflection.Assembly.GetExecutingAssembly()। CodeBase असेंबली के 'permenant' पथ को वापस कर देगा। – Cyrus

54

एक Windows फार्म परियोजना में:

पूरा पथ के लिए (फ़ाइल नाम शामिल है): string exePath = Application.ExecutablePath;
केवल पथ के लिए: string appPath = Application.StartupPath;

+2

"एप्लिकेशन। स्टार्टअपपैथ" कार्य निर्देशिका "द्वारा प्रभावित होगा यदि यह एक्सई शॉर्टकट में सेट है, या प्रक्रिया किसी अन्य ऐप्स से शुरू की गई है।" – Pedro77

78

इसके अलावा:

AppDomain.CurrentDomain.BaseDirectory 
Assembly.GetEntryAssembly().Location 
+18

AppDomain.CurrentDomain.BaseDirectory एक यूनिट टेस्ट प्रोजेक्ट में काम करता है। –

+0

मेरे लिए आकर्षण की तरह काम करता है .... –

2

में विजुअलस्टूडियो 2008 आप इस कोड का उपयोग कर सकते हैं:

var _assembly = System.Reflection.Assembly 
       .GetExecutingAssembly().GetName().CodeBase; 

    var _path = System.IO.Path.GetDirectoryName(_assembly) ; 
+0

यह वास्तव में सही जवाब नहीं है। यह आपको "file: // foo" – dyatchenko

+0

जैसे स्ट्रिंग देगा, साथ ही यह 'System.IO.Path.GetDirectoryName' में ArgumentException के साथ समाप्त हो जाएगा। – benderto

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