2010-08-11 29 views
51

Tôi cần đến đường dẫn bin của hội đồng thi hành. Làm thế nào để bạn nhận được nó? Tôi có một Plugins thư mục trong Bin/Debug và tôi cần phải có được vị tríLàm cách nào để tải Bin Path?

+0

Tại sao bạn cần điều này? Tại sao ứng dụng đã không có đường dẫn, nó dường như tìm thấy việc lắp ráp tốt? Triển khai của bạn trông như thế nào? – McKay

Trả lời

73

Đây là cách bạn có được con đường thực hiện các ứng dụng:

var path = System.IO.Path.GetDirectoryName( 
     System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 

MSDN có một tham chiếu đầy đủ về how to determine the Executing Application's Path.

Lưu ý rằng giá trị trong path sẽ ở dạng file:\c:\path\to\bin\folder, vì vậy trước khi sử dụng đường dẫn, bạn có thể cần phải cắt file:\ khỏi mặt trước. Ví dụ .:

path = path.Substring(6); 
+0

Xin chào, cảm ơn bạn đã trả lời nhanh chóng. Tại sao nó nếu tôi hardcode đường dẫn nó tìm thấy nó và nếu tôi làm mã sau nó không. Sự khác biệt duy nhất tôi có thể thấy là "\\". Tôi có thiếu gì đó không? var binpath = Path.GetDirectoryName (Assembly.GetExecutingAssembly(). GetName(). CodeBase); var fullpath = Path.Combine (binpath, folderName); nếu (! Directory.Exists (fullpath)) trả về; – user9969

+6

Trong trường hợp của tôi, vấn đề là System.IO.Path.GetDirectoryName() trả về một đường dẫn với một "tập tin: \\" ở đầu. Tôi chỉ cần gỡ bỏ nó từ chuỗi và tất cả mọi thứ đã làm việc. –

+0

Điều này dường như đi vào thư mục ra – Demodave

50

Bạn có thể làm điều này

Assembly ass = Assembly.GetExecutingAssembly(); 
    string path = System.IO.Path.GetDirectoryName(ass.Location); 
+6

Hoặc điều này! 'System.IO.Path.GetDirectoryName (Assembly.GetExecutingAssembly(). Location)' – GONeale

+4

Dường như không hoạt động nếu bạn đang chạy thử nghiệm NUnit. Đường dẫn trong trường hợp đó trỏ đến thư mục TEMP. – tponthieux

+10

haha, tên biến ngọt – JohnnyFun

6
var assemblyPath = Assembly.GetExecutingAssembly().CodeBase; 
7
Path.GetDirectoryName(Application.ExecutablePath) 

ví dụ. giá trị:

C:\Projects\ConsoleApplication1\bin\Debug 
+3

Lưu ý: Giải pháp này dành cho Windows.Forms chỉ – m1m1k

16

Đây là những gì tôi đã sử dụng để thực hiện việc này:

System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? ""); 
+2

Điều này làm việc hoàn hảo trong lưu trữ IIS và Winform, cảm ơn bạn. – wchoward

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