Обратите внимание, что значение в pathбудет в форме file:\c:\path\to\bin\folder, поэтому перед использованием пути вам может потребоваться file:\снять переднюю часть. Например:
Привет, спасибо за быстрый ответ. Почему, если я жестко закодирую путь, который он найдет, а если я сделаю следующий код, он этого не сделает. Единственная разница, которую я вижу, - это "\\". Я что-то упускаю? var binpath = Path.GetDirectoryName (Assembly.GetExecutingAssembly (). GetName (). CodeBase); var fullpath = Path.Combine (binpath, имя папки); если (! Directory.Exists (полный путь)) return;
user9969
6
В моем случае проблема заключалась в том, что System.IO.Path.GetDirectoryName () возвращает путь с "file: \\" в начале. Я просто удалил его из строки и все заработало.
Heitor Corrêa
Кажется, это идет в каталог out
Demodave
1
путь = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly (). CodeBase); это сработало для меня
m1m1k
6
Я предлагаю использовать .Replace ("file: \\", "") для удаления префикса файла, поскольку он более специфичен для проблемы.
Это отлично сработало в хостинге IIS и Winform, спасибо.
dynamiclynk
Благодаря! Кажется, это работает для приложения ASP.NET и консольного приложения. В asp.net RelativeSearchPathсодержит фактическую «БИН» папку и в консольном приложении это nullи BaseDirectoryсодержит фактический «БИН» путь.
Мариуш Павельски
8
var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
Ответы:
Вот как вы можете узнать путь выполнения приложения:
var path = System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
В MSDN есть полная справка о том, как определить путь к исполняющему приложению .
Обратите внимание, что значение в
path
будет в формеfile:\c:\path\to\bin\folder
, поэтому перед использованием пути вам может потребоватьсяfile:\
снять переднюю часть. Например:path = path.Substring(6);
источник
Ты мог бы сделать это
Assembly asm = Assembly.GetExecutingAssembly(); string path = System.IO.Path.GetDirectoryName(asm.Location);
источник
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
Вот что я делал для этого:
System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? "");
источник
RelativeSearchPath
содержит фактическую «БИН» папку и в консольном приложении этоnull
иBaseDirectory
содержит фактический «БИН» путь.var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
источник
например. значение:
источник
var path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");
источник