.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
답변
답변
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();