Мой проект имеет структуру папок:
- Проект,
- Проект/данные
- Проект/Двигатель
- Проект /Server
- проект/передний конец
На сервере (работающем в папке 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 или debug). Но когда я запустил его на mac, он получил " Directory.GetCurrentDirectory()
" отправил меня в /usr//[something else]. Это не относится к папке, где находится мой проект.
Каков правильный способ поиска относительных путей в моем проекте? Где я должен хранить папку данных таким образом, чтобы она была легко доступна для всех подпроектов в решении - в частности, для проекта сервера kestrel? Я предпочитаю не хранить его в папке wwwroot, потому что папка данных поддерживается другим членом в команде, и я просто хочу получить доступ к последней версии. Какие у меня варианты?