2011-10-17 38 views
5

nếu tôi muốn để có được vị trí thực thi những gì là sự khác nhau giữa lệnh này:khác nhau giữa vị trí thực thi

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

Directory.GetCurrentDirectory(); 

System.Environment.CurrentDirectory; 

có bất kỳ khác nhau? được trỏ đến vị trí khác?

Trả lời

5

Assembly.GetExecutingAssembly(). Địa

Gets vị trí của hội đồng thực hiện. Trong một ứng dụng ASP.NET, điều này có thể thay đổi do các cụm sao chép bóng trong các thư mục hệ thống. Vị trí của hội đồng đang thực thi có thể khác với vị trí của quá trình lưu trữ.

Directory.GetCurrentDirectory();

Nhận thư mục làm việc hiện tại của quá trình lưu trữ. Trong hầu hết các trường hợp, đây sẽ là thư mục nơi tệp thực thi được đặt nhưng thư mục làm việc này có thể được sửa đổi theo chương trình bằng cách sử dụng phương thức SetCurrentDirectory.

System.Environment.CurrentDirectory;

Thư mục mà quá trình lưu trữ được bắt đầu.


Trong ứng dụng dành cho máy tính để bàn nơi bạn có mọi thứ trong cùng một thư mục, 3 có thể trả về giống nhau.

+1

"có lẽ sẽ trả lại tương tự "là sai, bạn không bao giờ có thể dựa vào điều đó. Thư mục làm việc ("dir hiện tại") có thể được đặt trong thuộc tính phím tắt hoặc bạn có thể chạy chương trình từ thư mục khác từ dòng lệnh. – matejcik

+0

@matejcik, đó là lý do tại sao tôi nói 'sẽ' và không 'sẽ luôn luôn'. Tôi nên đã sử dụng một từ khác nhau mặc dù: 'might'. –

2
  1. Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) trả về một thư mục được chỉ định.

  2. Directory.GetCurrentDirectory()được các hệ thống hiện tại thư mục mà không xuyệc ngược, theo MSDN. Directory.GetCurrentDirectory()

  3. System.Environment.CurrentDirectoryđược hoặc bộ hệ thống thư mục hiện hành.

2

Thư mục hiện tại là thư mục hoạt động, không nhất thiết phải giống thư mục chứa assembly của bạn.

Ví dụ, nếu bạn đã trên dòng lệnh, trong thư mục gốc ổ C: \ và đã lệnh "SomeFolder \ MyProgram.exe" thư mục hiện tại sẽ vẫn là C: \

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