Bin Path는 어떻게 얻습니까?


80

실행중인 어셈블리의 bin 경로가 필요합니다. 어떻게 얻습니까? Bin / Debug에 폴더 플러그인이 있고 위치를 가져와야합니다.


왜 이것이 필요합니까? 응용 프로그램에 이미 경로가없는 이유는 무엇입니까? 어셈블리를 제대로 찾은 것 같습니까? 배포는 어떤 모습입니까?
McKay

답변:


119

응용 프로그램의 실행 경로를 얻는 방법은 다음과 같습니다.

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);

1
안녕하세요, 귀하의 신속한 답변에 감사드립니다. 왜 내가 경로를 하드 코딩하면 찾을 수 있고 다음 코드를 수행하면 그렇지 않습니다. 내가 볼 수있는 유일한 차이점은 "\\"입니다. 내가 뭔가를 놓치고 있습니까? var binpath = Path.GetDirectoryName (Assembly.GetExecutingAssembly (). GetName (). CodeBase); var fullpath = Path.Combine (binpath, folderName); if (! Directory.Exists (fullpath)) return;
user9969 2010-08-11

6
제 경우 문제는 System.IO.Path.GetDirectoryName ()이 처음에 "file : \\"이있는 경로를 반환한다는 것입니다. 방금 문자열에서 제거했고 모든 것이 작동했습니다.
Heitor Corrêa 2015-06-26

이것은 아웃 디렉토리로 이동하는 것 같습니다
Demodave

1
경로 = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly (). CodeBase); 이것은 나를 위해 일했습니다
m1m1k 2015

6
.Replace ( "file : \\", "")를 사용하여 파일 접두사를 제거하는 것이 좋습니다. 문제에 더 구체적이기 때문입니다.
TinyRacoon

71

당신은 이것을 할 수 있습니다

    Assembly asm = Assembly.GetExecutingAssembly();
    string path = System.IO.Path.GetDirectoryName(asm.Location);

10
아니면 이거! System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
GONeale 2014 년

9
NUnit 테스트를 실행중인 경우 작동하지 않는 것 같습니다. 이 경우 경로는 TEMP 디렉토리를 가리 킵니다.
tponthieux

엔트리 어셈블리를 원하지 않습니까?
N-ate

29

이것이 내가 이것을 달성하기 위해 사용한 것입니다.

System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? "");

2
이것은 IIS 호스팅과 Winform에서 완벽하게 작동했습니다. 감사합니다.
dynamiclynk

감사! 이것은 ASP.NET 앱 및 콘솔 앱에서 작동하는 것 같습니다. asp.net RelativeSearchPath에는 실제 "bin"폴더가 포함되어 null있고 콘솔 앱에서는 BaseDirectory실제 "bin"경로가 포함되어 있습니다.
MARIUSZ Pawelski


8
Path.GetDirectoryName(Application.ExecutablePath)

예. 값:

C:\Projects\ConsoleApplication1\bin\Debug

8
참고 :이 솔루션은 Windows.Forms 전용입니다.
m1m1k 2015

3
var path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.