Mam starą bibliotekę dll, która została skompilowana w ramach platformy .NET i wdrożona. Nie jestem pewien, dla której wersji platformy .NET został skompilowany. Zastanawiam się, jak mogę określić, z którą wersją platformy .NET została skompilowana ta biblioteka dll? Nie mogę ufać kodowi źródłowemu, ponieważ uważam, że został uaktualniony do programu Visual Studio 2008 i zmieniony na .NET Framework w wersji 3.5.
.net
.net-framework-version
mpenrow
źródło
źródło
Odpowiedzi:
Załaduj go do Reflectora i zobacz, do czego się odnosi?
na przykład:
źródło
W PowerShell możesz użyć następujących poleceń, aby uzyskać docelowe środowisko uruchomieniowe:
Dostosowałem to do PowerShell z odpowiedzi Bena Griswolda .
Jeśli chcesz poznać docelową wersję platformy określoną w programie Visual Studio, użyj:
Powinieneś dostać coś takiego
źródło
dotPeek to świetne (bezpłatne) narzędzie do wyświetlania tych informacji.
Jeśli masz kilka problemów z uzyskaniem Reflectora, jest to dobra alternatywa.
źródło
Możesz użyć ILDASM ...
i sprawdź, czy w wynikach znajduje się „Sekcja metadanych”. To byłoby coś takiego:
Znacznik „wersja” informuje o wersji .NET Framework. W powyższym przykładzie jest to 4.0.30319
źródło
// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, versio n: v4.0.30319
Masz kilka opcji: Aby uzyskać to programowo z kodu zarządzanego, użyj Assembly.ImageRuntimeVersion:
W wierszu poleceń, począwszy od wersji 2.0, plik ildasm.exe pokaże go po dwukrotnym kliknięciu „MANIFESTU” i wyszukaniu „Wersja metadanych”. Określanie wersji CLR obrazu
źródło
Użyj ILSpy http://ilspy.net/
open source, darmowy, zdecydowanie opcja, ponieważ teraz reflektor jest płatny.
źródło
Po prostu
źródło
GetCustomAttributes
Nie posiadaTargetFrameworkAttribute
. Jednak ImageRuntimeVersion działa dobrze, pobiera odpowiedni CLR, dla którego został zbudowany plik binarny. Potrzebuję docelowej wersji platformy, dla której została zbudowana.Jeszcze inna opcja za pośrednictwem Visual Studio, dodaj odwołanie do biblioteki DLL do dowolnego projektu, a następnie kliknij prawym przyciskiem myszy nowe odwołanie i kliknij opcję Właściwości, aby zobaczyć, czego szukasz w wersji Runtime:
źródło
Zdekompiluj go za pomocą ILDASM i spójrz na wersję mscorlib, do której się odwołujemy (powinna znajdować się prawie na górze).
źródło
Najprostszy sposób: po prostu otwórz plik .dll w dowolnym edytorze tekstu. Spójrz na jedną z ostatnich linii:
źródło
Szybko napisałem tę aplikację konsolową C #, aby to zrobić:
https://github.com/stuartjsmith/binarydetailer
Po prostu przekaż katalog jako parametr, a on zrobi wszystko, co w jego mocy, aby poinformować cię o strukturze sieciowej dla każdej biblioteki dll i exe w tym miejscu
źródło
„ Detect It Easy ”, znany również jako DiE, to program do określania typów plików. Działa z plikami .dll lub innymi plikami (.exe). Całkowicie darmowy do użytku komercyjnego i niekomercyjnego.
źródło
Jeśli masz
DotPeek
fromJetBrains
, możesz to zobaczyć wAssembly Explorer
.źródło
Rozwijając odpowiedzi tutaj, może to wybuchnąć, jeśli istnieje zależny montaż. Jeśli masz szczęście i wiesz, gdzie jest osoba zależna (lub nawet szczęśliwsza, jest w GAC), może to pomóc ...
Źródła: https://weblog.west-wind.com/posts/2006/Dec/22/Reflection-on-Problem-Assemblies
źródło