2010-10-21 33 views
123

için yolu al benim .exe yolumu nasıl alabilirim çünkü eğer benim .exe'imi kopyalarsam yeni yolumu alabilirim? Bir Windows Forms projesindebenim .exe

cevap

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

Sadece yolu istedim ama bu komutun bana exe yol + dosya adı verdiğini görüyorum. . "File: //" diğer El GetEntryAssembly() Yer ile yolunu verir On :-(-. Ben bu bir Birim Test projede çalışmıyor 'AppDomain.CurrentDomain.BaseDirectory' – user799821

+12

oldu gerektiği Ne GetEntryAssembly() null . –

+9

System.Reflection.Assembly.GetExecutingAssembly(). yürütülen derleme şu anda bulunduğu yer başları veya montaj yürütme değilken. gölge kopyalama meclislerinin durumda, bir yol alacak yer almaktadır olabilir veya olmayabilir geçici dizinde. System.Reflection.Assembly.GetExecutingAssembly(). CodeBase toplanma 'armatürlerle' yolunu dönecektir. – Cyrus

54

: tam yol için

(dosya adı dahil): Ayrıca string appPath = Application.StartupPath;

+2

Çalışma dizini' Application.StartupPath tarafından geçerlilik kazanır" – Pedro77

78

:

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

AppDomain.CurrentDomain.BaseDirectory bir Birim Test projesinde çalışır. –

+0

benim için cazibe gibi çalışır. –

2

sadece yolu için string exePath = Application.ExecutablePath;
visualstudio 2008 bu kodu kullanabilirsiniz:

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

    var _path = System.IO.Path.GetDirectoryName(_assembly) ; 
"o exe kısayol ayarlanır, veya süreç başka uygulamalardan başlatılıp başlatılmadığını. '
+0

Bu gerçekten doğru cevap değil. Bu size "file: // foo" gibi bir dize verecek – dyatchenko

+0

Ayrıca System.IO.Path.GetDirectoryName' içinde ArgumentException ile sona erecek – benderto