Мій проект має структуру папок на мелодії:
- Проект,
- Проект / дані
- Проект / двигун
- Проект / Сервер
- проект / фронт-енд
На сервері (що працює в папці Project / Server) я посилаюся на папку так:
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);
На моїй машині Windows цей код працює нормально, оскільки Directory.GetCurrentDirectory()
направляється в поточну папку і працює
rootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
отримує мені кореневу папку проекту (не папки bin або налагодження). Але коли я запустив його на Mac, він " Directory.GetCurrentDirectory()
" надіслав мене до / usr // [щось інше]. Це не стосувалося папки, де лежить мій проект.
Який правильний спосіб знайти відносні шляхи в моєму проекті? Де я повинен зберігати папку даних таким чином, щоб вона була легко доступною для всіх підпроектів у рішенні - зокрема, для проекту сервера kestrel? Я вважаю за краще не зберігати його в папці wwwroot, оскільки папка даних підтримується іншим членом команди, і я просто хочу отримати доступ до останньої версії. Які у мене варіанти?