Một giải pháp không hoàn hảo khác (nhưng có lẽ gần hoàn hảo hơn một số giải pháp khác):
protected static string GetSolutionFSPath() {
return System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName;
}
protected static string GetProjectFSPath() {
return String.Format("{0}\\{1}", GetSolutionFSPath(), System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
}
Phiên bản này sẽ trả về thư mục của các dự án hiện tại ngay cả khi dự án hiện tại không phải Startup Project
là giải pháp.
Lỗ hổng đầu tiên với điều này là tôi đã bỏ qua tất cả các kiểm tra lỗi. Điều đó có thể được sửa đủ dễ dàng nhưng chỉ là vấn đề nếu bạn lưu trữ dự án của bạn trong thư mục gốc cho ổ đĩa hoặc sử dụng một đường nối trong đường dẫn của bạn (và đường nối đó là hậu duệ của thư mục giải pháp) vì vậy kịch bản này khó xảy ra . Tôi không hoàn toàn chắc chắn rằng Visual Studio có thể xử lý một trong hai thiết lập này.
Một vấn đề khác (rất có thể) mà bạn có thể gặp phải là tên dự án phải khớp với tên thư mục của dự án để tìm thấy nó.
Một vấn đề khác bạn có thể có là dự án phải nằm trong thư mục giải pháp. Đây thường không phải là vấn đề nhưng nếu bạn đã sử dụng Add Existing Project to Solution
tùy chọn để thêm dự án vào giải pháp thì đây có thể không phải là cách tổ chức giải pháp của bạn.
Cuối cùng, nếu ứng dụng của bạn sẽ sửa đổi thư mục làm việc, bạn nên lưu trữ giá trị này trước khi bạn làm điều đó vì giá trị này được xác định liên quan đến thư mục làm việc hiện tại.
Tất nhiên, tất cả điều này cũng có nghĩa là bạn không được thay đổi các giá trị mặc định cho các tùy chọn ' Build
-> Output path
hoặc Debug
-> Working directory
của dự án trong hộp thoại thuộc tính dự án.