Подтвердить что ты не робот

Как я могу удалить "файл: \\" из возвращаемого значения 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); работает хорошо. Спасибо.

4b9b3361

Ответ 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 является самым надежным решением, на мой взгляд.