2014-12-01 2 views
0

.Net Framework 4.5.1을 사용하여 C# 라이브러리를 개발하여 Windows 8.1 데스크톱 응용 프로그램에서 사용하고 있습니다.클래스 라이브러리에서 현재 디렉토리 가져 오기

이 라이브러리 프로젝트에는 JSON 파일이 있는데이 파일을로드하려고합니다. 나는 그것을 테스트해야하고 Assembly.GetEntryAssembly()가 null의 경우,

string currentDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 

을하지만 첫째, 나는이와 현재 디렉토리를 얻기 위해 노력했다.

어쩌면 JSON 파일 대신 리소스 파일을 사용할 수 있습니다.

private void LoadData() 
{ 
    string currentDir = 
     Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 

    string file = 
     Path.Combine(currentDir, cardsDir, cardsFile); 

    string json = 
     File.ReadAllText(file); 

    Deck = JsonConvert.DeserializeObject<Card[]>(json); 
} 

어떤 생각 :

는 방법? 더 나은 접근 방법이 있습니까? 어떻게 현재의 직위를 얻을 수 있습니까?

답변

1

는이

Environment.CurrentDirectory 

이 응용 프로그램의 현재 작업 디렉토리를 반환하려고합니다. 지금은 '있는 Environment.CurrentDirectory'가 반드시 응용 프로그램 파일이 들어있는 디렉토리를 반환하는 응용 프로그램에

string currentDir = Path.GetDirectoryName(Environment.CurrentDirectory); 
+0

그게 얻을 것입니다 생각'문자열 currentDir에서 자신의 첫 번째 줄과 동일한 결과 ' – MethodMan

+0

고마워,'Environment.CurrentDirectory'는 현재 디렉토리를 반환합니다. – VansFannel

+0

@VansFannel을 환영합니다. –

0

에주의를 모든 파일 상대에 액세스 할 수 있습니다.

응용 프로그램을 시작한 위치에 따라 다릅니다.

예를 들어 exe 파일이 C : \ User \ ProgramName \ prog.exe에 있지만 "C : \ User \ ProgramName \ prog.exe"와 같이 cmd에서 응용 프로그램을 시작한 경우. 'C : \'가 아니라 'C : \ 사용자 \의 programName을'

는 또한, 그것은 바로 가기에서 olso 발생

'있는 Environment.CurrentDirectory'의 결과

이 될 것입니다. 당신이 시작을 참조 http://oi60.tinypic.com/29eoylf.jpg

:에

모습? 응용 프로그램이 거기에서 시작 되었기 때문에 'Environment.CurrentDirectory'의 결과가됩니다. 솔루션은 응용 프로그램이 같은

뭔가를 실행 어셈블리의 위치를 ​​얻을 수 있습니다 anoter

는 :

typeof(Program).Assembly.Location

관련 문제