У меня есть старый dll, который был скомпилирован против платформы.NET и развернут. Я не уверен, против какой версии платформы.NET это было скомпилировано. Я задаюсь вопросом, как я могу определить, против какой версии платформы.NET этот dll был скомпилирован? Я не могу доверять исходному коду, потому что я полагаю, что он был обновлен до Visual Studio 2008 и изменен на версию 3.5 платформы.NET.
Загрузите его в Reflector и посмотрите, на что он ссылается?
например:
Вы можете использовать ILDASM ...
ildasm.exe C:\foo.dll /metadata[=MDHEADER] /text /noil
и проверить «Раздел метаданных» в выходных данных. Это будет примерно так:
Раздел метаданных: 0x424a5342, версия: 1.1, extra: 0, версия len: 12, версия: v4.0.30319
Тег «версия» сообщит вам версию .NET Framework. В приведенном выше примере это 4.0.30319
.У вас есть несколько вариантов: Чтобы получить его программно, из управляемого кода, используйте Assembly.ImageRuntimeVersion:
Dim a As Assembly = Reflection.Assembly.ReflectionOnlyLoadFrom("C:\path\assembly.dll")
Dim s As String = a.ImageRuntimeVersion
Из командной строки, начиная с версии 2.0, ildasm.exe покажет его, если вы дважды щелкните на "MANIFEST" и поищите "Metadata version". Определение версии CLR изображения
Декомпилируйте его с помощью ILDASM и посмотрите версию mscorlib, которая упоминается (должно быть почти в самом верху).