2016-12-06 234 views
2

В настоящее время я пишу проект в visual studio в C#. проект полный путь:Получить относительный Путь к файлу C#

"C:\TFS\MySolution\" 

У меня есть файл, который нужно загрузить во время выполнения. позволяет сказать, что путь к файлу

"C:\TFS\MySolution\Project1\NeedtoLoad.xml" 

Я не хочу писать полный путь трудно закодированный, и хотите, чтобы получить путь в динамике.

Я использую следующую строку:

var path = Directory.GetCurrentDirectory(); 

Проблема, что каждый метод, который я нашел и выше строка кода получает мне следующий путь:

"C:\TFS\MySolution\Project1\bin\Debug" 

И что мне нужно, это

"C:\TFS\MySolution\Project1\" 

, так что я мог бы конкатенировать

NeedtoLoad.xml 

к ответу.

, конечно, я мог бы сделать:

path.Substring(0, path.IndexOf("bin\\Debug")); 

Но это не так элегантно.

Прежде чем вы скажете, что вопрос является дубликатом Пожалуйста, снова прочитайте вопрос, потому что я не нашел ничего, что бы это делало.

ответ

2

Вы можете использовать Directory.GetParent и его Parent член

string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName; 

Пойдет на уровни вверх по дереву пути и вернуться "C:\TFS\MySolution\Project1".

0

Если этот файл является частью вашего проекта, вы должны убедиться, что он копируется на ваш проект при сборке.

Выберите файл в проводнике решений и перейдите в область свойств в Visual Studio (F4). Выберите «Контент» как «Действие сборки». Теперь, когда вы создадите свое решение, файл будет скопирован в выходной каталог (bin/Debug или bin/Release).

0

Если xml является статической частью вашего проекта (вы не переопределяете его во время выполнения), то, вероятно, лучше всего включить его в свою DLL.

  • Перейти к свойствам файла и сделать его Embedded Resource
  • Просто загрузите его из библиотеки DLL ресурсов, например,

    var asm = Assembly.GetCallingAssembly(); 
    using (var stream = asm.GetManifestResourceStream(resource)) 
    { 
        var reader = new StreamReader(stream); 
        return reader.ReadToEnd(); 
    } 
    

 Смежные вопросы

  • Нет связанных вопросов^_^