2013-08-13 3 views
0

외부 어셈블리에있는 XML 파일이 있습니다. 외부 어셈블리를 참조하는 Windows 응용 프로그램이 있지만 Windows 응용 프로그램을 실행할 때 파일에서 읽으려고하면 파일이있는 어셈블리 경로 대신 Windows 응용 프로그램 경로가 사용됩니다.외부 어셈블리에서 파일 열기?

외부 조립은 c : \ 서비스 \ tp.dll

윈도우 응용 프로그램은 c : \ 프로젝트 \ 윈도우 \ bin에.

tp.dll에는 File.OpenRead를 호출하는 메서드가 있지만 Windows 응용 프로그램을 실행하고 tp.dll에서 메서드를 호출하면 tp 응용 프로그램 경로 대신 Windows 응용 프로그램 경로가 사용됩니다.

+1

이 작업을보기 : 무엇을 파일 경로 어떤 코드 모양처럼 (들)

 Assembly loader = Assembly.GetExecutingAssembly(); var rawstream = loader.GetManifestResourceStream(template); byte[] byteArray = rawstream.ReadToEnd(); 

은 MSDN 문서를 검토 한 후, 이것은 당신이 당신의 어셈블리 참조를 시작하는 데 필요한 아마 예상 대 실제? –

+1

임베디드 리소스를 의미합니까? –

답변

1

어쩌면 자세한 설명과 일부 코드를 입력하십시오. 중요 - 어셈블리를로드하는 방법 - XML ​​파일에 액세스하는 방법.

+0

이 질문에 대답합니까? –

+0

아니요, 일부 코드 게시 문제를 보려면 더 많은 정보가 필요합니다. –

+0

그러면 주석이어야합니다. 답변 없음 –

2

외부 어셈블리를 작성하고 모든 것이 있어야하는 위치를 알고 있다고 가정하면 Assembly 클래스를 사용하여 참조하려고 했습니까?

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx

나는 나의 현재 실행중인 어셈블리에 포함의 빌드 작업이 파일을로드하기 위해이 클래스를 사용하지만, 그런 다음 전화를이 클래스와 다른 어셈블리를로드 할 수 없습니다 이유는 표시되지 않습니다. GetManifestResourceStream (원하는 파일의 경로) 메서드.

다음은 현재 어셈블리에서 포함 된 데이터를로드하는 데 사용하는 방법입니다. 대신 .GetExecutingAssembly() 메서드를 .Load() 메서드로 변경하십시오.

 Assembly SampleAssembly = Assembly.Load 
     ("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 
+0

이것은 나에게 혼란스러운 부분입니다. 내 Windows 응용 프로그램에서 외부 어셈블리를 참조하는 경우 왜 다시 액세스하려면 리플렉션을 사용해야합니까? – Xaisoft

+0

좋은 질문이지만 그 답변이 없습니다. 어셈블리를 참조하기 위해 어셈블리 클래스가 필요했고, 리플렉션에서 살았 기 때문에 그냥 함께갔습니다. –

+0

나는 이것에 대해 조금 더 생각해 보았습니다 - 당신이이 외부 어셈블리에서 원하는 파일들이 어셈블리 안에 내장되어 있습니까? 그렇다면 외부 어셈블리에 이러한 파일을 검색 할 수있는 공용 메서드가 있습니까? 그렇지 않은 경우 이러한 항목을 검색 할 수있는 공용 처리기를 추가하는 것을 고려해 볼 수 있습니다. 이는 반영을 사용해야하는 필요성을 없애줍니다. –

관련 문제