Как я могу удалить "файл: \\" из возвращаемого значения Path.GetDirectoryName() в С#
string path = Path.GetDirectoryName(
Assembly.GetAssembly(typeof(MyClass)).CodeBase);
выход:
файл:\d:\обучение\CS\тест\test.xml
Какой лучший способ вернуть только d:\learning\cs\test\test.xml
file:\\
будет генерировать исключение, когда я вызываю doc.Save(returnPath)
, однако doc.Load(returnPath)
; работает хорошо. Спасибо.
Ответы
Ответ 1
Если вам нужен каталог сборки этого класса, вы можете использовать свойство Assembly.Location
:
string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(MyClass)).Location);
Это не совсем то же самое, что и свойство CodeBase
. Location
- это "путь или UNC-адрес загруженного файла, который содержит манифест", тогда как CodeBase
- это "местоположение сборки, как указано первоначально, например, в объекте AssemblyName".
Ответ 2
string path = new Uri(Assembly.GetAssembly(typeof(MyClass)).CodeBase).LocalPath;
Ответ 3
System.Uri uri = new System.Uri(Assembly.GetAssembly(typeof(MyClass)).CodeBase);
string path = Path.GetDirectoryName(uri.LocalPath);
Ответ 4
Мой первый подход будет таким...
path = path.Replace("file://", "");
Ответ 5
используйте метод строки подстроки, чтобы захватить имя файла после файла:\
Ответ 6
Этот путь добавляет имя exe в конец (C:\Folder\project\project\bin\debug\myapp.exe\xyz.txt).
String replace является самым надежным решением, на мой взгляд.