2009-08-03 4 views
1

어셈블리 목록을 반복하고 버전 번호를 결정해야합니다. 전에 System.Reflection.Assembly.GetExecutingAssembly(). GetName(). Version을 사용했지만이 경우 아직로드되지 않은 어셈블리로 작업하고 있습니다. 나는 System.Reflection.Assembly.ReflectionOnlyLoadFrom ("assembly.dll")을 사용할 수 있지만 자신의 응용 프로그램 도메인에 어셈블리를로드하고 언로드하지 않으면 메모리를 먹을 수 있음을 읽었습니다. ReflectionOnlyLoadFrom() 또는 LoadFrom()의 사실입니까?외부 어셈블리에서 어셈블리 버전을 검색하는 가장 효율적인 방법에 대한 제안

또는 어셈블리를로드하지 않고 버전 정보를 얻는 방법이 있습니까?

답변

6

System.Reflection.AssemblyName을 살펴보십시오. 당신은 System.Version 당신이 메이저, 마이너, 작은 revison를 얻을 수있는 객체 및 개정 정보를 반환

AssemblyName.GetAssemblyName("foo.dll").Version 

을 할 수 있습니다. GetAssemblyName 방법에 Msdn article에있어서, 상기 파일이 어셈블리 매니페스트가 포함 된 경우

이 작동합니다. 이 방법을 사용하면 파일을 열고 닫을 수 있지만 어셈블리는이 도메인에 추가되지 않습니다.

+0

세실 제안을 통해 승인 되었기 때문에 우리 환경에 의존하지 않습니다. – grenade

+0

여기 경고한다, 용이어야한다! 이것은 우리에게 큰 도움이되었지만 서로 다른 참조 요구 사항을 가진 다른 유형의 프로젝트 (WPF가 이상한 일을하고 있습니다.)가 잘못 수행되기 시작했으며 문제를 추적하기가 쉽지 않습니다. Cecil을 사용하도록 코드를 옮길 것입니다. – si618

1

모노 프로젝트의 Cecil -library를 사용할 수 있습니다.

+0

나는이 아이디어를 많이 좋아합니다. – grenade

-1

나는 그것들을로드하지 않고서는 어셈블리 버전을 얻을 방법이 없다고 생각한다.

관련 문제