Относительный путь в C#
Относительный путь удобен в логах и интерфейсе: пользователь видит "cfg/app.ini" вместо длинного абсолютного адреса.
Метод сравнивает строки путей. Каталоги могут отсутствовать на диске в момент вызова.
Зададим каталог-базу и путь к файлу внутри нее. Базу заранее делают абсолютной через Path.GetFullPath. Сам файл на диске не создается. В консоли ожидается "cfg/app.ini" или тот же путь с разделителями ОС:
string baseDir = Path.GetFullPath(Path.Combine(Path.GetTempPath(), "rel-eta"));
Directory.CreateDirectory(baseDir);
string target = Path.Combine(baseDir, "cfg", "app.ini");
string rel = Path.GetRelativePath(baseDir, target);
Console.WriteLine(rel);
Directory.Delete(baseDir, true);
Для каталога projects и файла projects/src/Main.cs выведите короткую цепочку от базы.