Вы можете использовать обычные Path методы. MapPath
помогает преобразовать виртуальный путь в физический путь на веб-сервере. Там нет необходимости для этого преобразования в winforms. Возможно, вы ищете Assembly.GetExecutingAssembly (). Расположение , которое возвращает местоположение выполняемой сборки.
Изменить - Ваш обновленный вопрос должен работать в Winform.
XmlReader.Create имеет довольно много перегрузок, одна из них (string, XmlReaderSettings)
. Это перегрузка, которую вы используете в своем вопросе. Вы можете использовать тот же метод, но другой каталог, если хотите.
reader = XmlReader.Create(@"C:\Data.xml", settings);
Чтобы получить каталог исполняемой сборки, вы можете использовать AppDomain.CurrentDomain.BaseDirectory . Так что это может быть что-то вроде этого:
reader = XmlReader.Create(AppDomain.CurrentDomain.BaseDirectory + "Data.xml", settings);