Determine.NET wersja Framework dla dll

Mam stary dll, który został skompilowany na. Net framework i wdrożony. Nie jestem pewien, z którą wersją.NET framework został skompilowany. Zastanawiam się, jak Mogę określić, która wersja. NET framework ten dll został skompilowany? Nie mogę ufać kodowi źródłowemu, ponieważ uważam, że został on zaktualizowany do Visual Studio 2008 i zmieniony na. Net Framework w wersji 3.5.

Author: mpenrow, 2010-08-11

14 answers

Załaduj go do Reflektora i zobacz do czego się odnosi?

Na przykład:

Tutaj wpisz opis obrazka

 50
Author: ParmesanCodice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 14:36:37

W PowerShell możesz użyć następujących opcji, aby uzyskać docelowy czas pracy:

$path = "C:\Some.dll"
[Reflection.Assembly]::ReflectionOnlyLoadFrom($path).ImageRuntimeVersion
W tym przypadku nie jest to możliwe.

Jeśli chcesz poznać docelową wersję frameworka określoną w Visual Studio, użyj:

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

Powinieneś dostać coś takiego

.NETFramework, Version = v4.5.2

 135
Author: Swoogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:22

DotPeek jest świetnym (darmowym) narzędziem do wyświetlania tych informacji.

Jeśli masz kilka problemów z chwytaniem reflektora, jest to dobra alternatywa.

Tutaj wpisz opis obrazka

 72
Author: wal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-03 01:04:15

Możesz użyć ILDASM ...

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

I sprawdź "sekcję metadanych" na wyjściu. To byłoby coś takiego:

Sekcja metadanych: 0x424a5342, Wersja: 1.1, extra: 0, version len: 12, Wersja: v4. 0. 30319

Tag 'version' powie Ci wersję. NET Framework. W powyższym przykładzie jest to 4.0.30319

 50
Author: Josh Stodola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 11:39:10

Użyj ILSpy http://ilspy.net/

Open source, darmowy, zdecydowanie opcja od teraz jest płatna.

 19
Author: Kat Lim Ruiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-04 16:26:07

Masz kilka opcji: aby uzyskać go programowo, z kodu zarządzanego, użyj Assembly.ImageRuntimeVersion:

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

Z linii poleceń, począwszy od wersji 2.0, ildasm.exe pokaże go, jeśli dwukrotnie klikniesz na "MANIFEST" i poszukasz "wersja metadanych". określanie wersji CLR obrazu

 18
Author: Ben Griswold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-11 17:19:00

Po prostu

var tar = (TargetFrameworkAttribute)Assembly
          .LoadFrom("yoursAssembly.dll")
          .GetCustomAttributes(typeof(TargetFrameworkAttribute)).First();
 15
Author: stenly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-22 08:29:02

Kolejna opcja za pomocą Visual Studio, dodaj odniesienie do DLL do dowolnego projektu, a następnie kliknij prawym przyciskiem myszy na nowym odniesienia i kliknij Właściwości, możesz zobaczyć, czego szukasz w wersji Runtime:

Tutaj wpisz opis obrazka

 13
Author: lingo_journey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-15 17:27:32

Dekompiluj go za pomocą ILDASM i spójrz na wersję mscorlib, do której się odwołujemy (powinna być prawie na samej górze).

 8
Author: leppie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-11 17:14:10

Najprostszy sposób: wystarczy otworzyć .dll w dowolnym edytorze tekstu. Spójrz na jedną z ostatnich linijek: Tutaj wpisz opis obrazka

 7
Author: cedenbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-14 14:08:27

Szybko napisałem do tego aplikację C # console:

Https://github.com/stuartjsmith/binarydetailer

Po prostu przekaż katalog jako parametr i dołoży wszelkich starań, aby powiedzieć Ci Framework sieci dla każdego dll i exe w tam

 2
Author: stuartjsmith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-30 13:22:02

"Detect It Easy " znany również jako DiE jest programem do określania typów plików. Współpracuje z .pliki dll lub inne (.exe) pliki. Całkowicie bezpłatne do użytku komercyjnego i niekomercyjnego.

Tutaj wpisz opis obrazka

 2
Author: 20AMax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-13 00:40:52

Jeśli masz DotPeek z JetBrains, możesz to zobaczyć w Assembly Explorer.

Widzisz ten zrzut ekranu? im not:(

 0
Author: Sam Sch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-21 06:24:03

Rozszerzając odpowiedzi tutaj, to może wybuchnąć, jeśli istnieje zespół zależny. Jeśli masz szczęście i wiesz, gdzie jest zależny (lub nawet bardziej szczęśliwy, to jest w GAC) to może to pomóc ...

using System.Reflection;
using System.Runtime.Versioning;
// ...
{
    AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);
    var asm = System.Reflection.Assembly.LoadFrom(@"C:\Codez\My.dll");
    var targetFrameAttribute = asm.GetCustomAttributes(true).OfType<TargetFrameworkAttribute>().FirstOrDefault();
    targetFrameAttribute.Dump();
}

Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
    var name = args.Name;

    if (name.StartsWith("Depends"))
        return System.Reflection.Assembly.ReflectionOnlyLoadFrom(@"C:\Codez\Depends.dll");

    return System.Reflection.Assembly.ReflectionOnlyLoad(args.Name);
}

Odniesienie: https://weblog.west-wind.com/posts/2006/Dec/22/Reflection-on-Problem-Assemblies

 0
Author: CAD bloke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-25 12:06:46