2011-01-17 7 views
0

로드 된 DLL에서 "제품 버전"특성을 얻으려고합니다.DLL의 제품 버전 받기

예를 들어 파일> 탐색기에서 속성을 클릭하면 my System.Web.dll의 제품 버전이 2.0.50727.4955가됩니다.

그러나 나는 다음과 같은 코드가 있습니다

var assemblies = AppDomain.CurrentDomain.GetAssemblies(); 

foreach (var assembly in assemblies) 
{ 
    stringBuilder.Append("<br/>"); 
    stringBuilder.Append("<div><b>Name: </b>" + assembly.GetName() + "</div>"); 
    stringBuilder.Append("<div><b>Full name: </b>" + assembly.FullName + "</div>"); 
    stringBuilder.Append("<div><b>Is from GAC: </b>" + assembly.GlobalAssemblyCache + "</div>"); 
    stringBuilder.Append("<div><b>ImageRuntimeVersion: </b>" + assembly.ImageRuntimeVersion + "</div>"); 
} 

ImageRuntimeVersion는 V2.0.50727 반환, 나는 또한 제품 버전의 마지막 4 자리 숫자를 얻을 수있는 방법이 있습니까?

감사합니다!

답변

-1

내가 보통 버전의 마지막 부분을 반환하지 이런 일을 수행

return Assembly.GetAssembly(typeof(System.Web.UI.ScriptManager)).GetName().Version.ToString(); 
+0

감사 Allara을, 나는 개정을 시도했다 그러나이 반환 된 2.0.0.0 – timothyclifford

+0

이 올바르지 않습니다, 파일 또는 제품 버전이 아닌 어셈블리 버전을 반환합니다. – Nathan

2

당신은 FileVersionInfo class 찾고 :

FileVersionInfo.GetVersionInfo(typeof(string).Assembly.Location) 
+0

어셈블리를 동적으로 반복 할 경우 위치를 사용할 수 없습니다. 예를 들어, 내 foreach 루프에 FileVersionInfo.GetVersionInfo (assembly.Location) 넣으면 예외를 throw합니다. 호출 된 멤버가 동적 어셈블리에서 지원되지 않습니다. – timothyclifford

+1

@ 티모시 : 그 (것)들을 건너 뛸 필요가있을 것이다. 그들은 파일이 전혀 없으므로 찾고있는 정보가 존재하지 않습니다. 'IsDynamic' 속성을 확인하십시오. – SLaks

관련 문제