[.net] dll의 .NET Framework 버전 확인

.NET 프레임 워크에 대해 컴파일되어 배포 된 오래된 dll이 있습니다. 컴파일 된 .NET 프레임 워크 버전이 확실하지 않습니다. 이 dll이 컴파일 된 .NET 프레임 워크의 버전을 어떻게 확인할 수 있는지 궁금합니다. 소스 코드가 Visual Studio 2008로 업그레이드되었고 .NET Framework 버전 3.5로 변경되었다고 생각하기 때문에 소스 코드를 신뢰할 수 없습니다.



답변

그것을 반사판에 넣고 그것이 참조하는 것을 봅니까?

예를 들면 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


답변

PowerShell에서 다음을 사용하여 대상 런타임을 얻을 수 있습니다.

$path = "C:\Some.dll"
[Reflection.Assembly]::ReflectionOnlyLoadFrom($path).ImageRuntimeVersion

Ben Griswold의 답변 에서 PowerShell에 이것을 적용했습니다 .

Visual Studio에 지정된 대상 프레임 워크 버전을 알고 싶다면 다음을 사용하십시오.

$path = "C:\Some.dll"
[Reflection.Assembly]::ReflectionOnlyLoadFrom($path).CustomAttributes |
Where-Object {$_.AttributeType.Name -eq "TargetFrameworkAttribute" } |
Select-Object -ExpandProperty ConstructorArguments |
Select-Object -ExpandProperty value

당신은 같은 것을 얻어야합니다

.NETFramework, 버전 = v4.5.2


답변

dotPeek 는이 정보를 보여주는 훌륭한 도구입니다.

Reflector를 잡는 데 약간의 문제가 있다면 이것이 좋은 대안입니다.

여기에 이미지 설명을 입력하십시오


답변

ILDASM 을 사용할 수 있습니다 …

ildasm.exe C:\foo.dll /metadata[=MDHEADER] /text /noil

출력에서 ‘메타 데이터 섹션’을 확인하십시오. 다음과 같습니다.

메타 데이터 섹션 : 0x424a5342, 버전 : 1.1, 추가 : 0, 버전 len : 12, 버전 : v4.0.30319

‘version’태그는 .NET Framework 버전을 알려줍니다. 위의 예에서 4.0.30319입니다.


답변

몇 가지 옵션이 있습니다. 관리되는 코드에서 프로그래밍 방식으로 가져 오려면 Assembly.ImageRuntimeVersion을 사용하십시오.

Dim a As Assembly = Reflection.Assembly.ReflectionOnlyLoadFrom("C:\path\assembly.dll")
Dim s As String = a.ImageRuntimeVersion

v2.0부터 명령 줄에서 ildasm.exe는 “MANIFEST”를 두 번 클릭하고 “Metadata version”을 찾으면이를 표시합니다. 이미지의 CLR 버전 확인


답변

ILSpy 사용 http://ilspy.net/

오픈 소스, 무료, 확실히 반사판이 지불 된 이후 옵션입니다.


답변

단순히

var tar = (TargetFrameworkAttribute)Assembly
          .LoadFrom("yoursAssembly.dll")
          .GetCustomAttributes(typeof(TargetFrameworkAttribute)).First();