2010-10-21 36 views

Trả lời

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

Tôi chỉ muốn đường dẫn nhưng tôi thấy lệnh này cho tôi đường dẫn + tên tệp của exe. :-(Mặt khác GetEntryAssembly() Vị trí cung cấp đường dẫn với "file: //" - Cái tôi cần là 'AppDomain.CurrentDomain.BaseDirectory' – user799821

+12

Điều này không làm việc trong một dự án Test Unit. GetEntryAssembly() là null –

+9

System.Reflection.Assembly.GetExecutingAssembly() Vị trí trả về nơi hội đồng thực thi hiện đang được định vị, có thể hoặc không thể là nơi lắp ráp được đặt khi không thực thi. Trong trường hợp các cụm sao chép bóng, bạn sẽ nhận được một đường dẫn trong một thư mục tạm thời System.Reflection.Assembly.GetExecutingAssembly() CodeBase sẽ trả về đường dẫn 'permenant' của assembly 1. – Cyrus

54

Trong một dự án Windows Forms:

Đối với đường dẫn đầy đủ (bao gồm tên tập tin): string exePath = Application.ExecutablePath;
Đối với chỉ đường dẫn: string appPath = Application.StartupPath;

+2

"Application.StartupPath sẽ được thực hiện bởi" Thư mục làm việc "nếu được đặt trong lối tắt exe hoặc quá trình được bắt đầu từ một ứng dụng khác." – Pedro77

78

Ngoài ra:

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

AppDomain.CurrentDomain.BaseDirectory hoạt động trong một dự án Thử nghiệm Đơn vị. –

+0

hoạt động như sự quyến rũ cho tôi .... –

2

trong visualstudio 2008 bạn có thể sử dụng mã này:

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

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

Đó không phải là câu trả lời thực sự đúng. Nó sẽ cung cấp cho bạn một chuỗi như "file: // foo" – dyatchenko

+0

Ngoài ra nó sẽ kết thúc với ArgumentException trong 'System.IO.Path.GetDirectoryName' – benderto

Các vấn đề liên quan