Dự án của tôi có cấu trúc thư mục phù hợp với:
- Dự án,
- Dữ liệu dự án
- Dự án / Động cơ
- Dự án / Máy chủ
- dự án / front-end
Trong máy chủ (chạy trong thư mục Dự án / Máy chủ), tôi tham chiếu đến thư mục như sau:
var rootFolder = Directory.GetCurrentDirectory();
rootFolder = rootFolder.Substring(0,
rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
PathToData = Path.GetFullPath(Path.Combine(rootFolder, "Data"));
var Parser = Parser();
var d = new FileStream(Path.Combine(PathToData, $"{dataFileName}.txt"), FileMode.Open);
var fs = new StreamReader(d, Encoding.UTF8);
Trên máy tính Windows của tôi, mã này hoạt động tốt vì được Directory.GetCurrentDirectory()
đưa vào thư mục hiện tại và
rootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
lấy cho tôi thư mục gốc của dự án (không phải thư mục bin hoặc gỡ lỗi). Nhưng khi tôi chạy nó trên máy mac, nó nhận được " Directory.GetCurrentDirectory()
" gửi cho tôi đến / usr // [cái gì đó khác]. Nó không tham chiếu đến thư mục chứa dự án của tôi.
Cách chính xác để tìm đường dẫn tương đối trong dự án của tôi là gì? Tôi nên lưu trữ thư mục dữ liệu ở đâu để có thể dễ dàng truy cập vào tất cả các dự án con trong giải pháp - cụ thể là đối với dự án máy chủ kestrel? Tôi không muốn phải lưu trữ nó trong thư mục wwwroot vì thư mục dữ liệu được duy trì bởi một thành viên khác trong nhóm và tôi chỉ muốn truy cập phiên bản mới nhất. Những lựa chọn của tôi là gì?