Откуда в Visual Studio берется свойство «Версия» для справочной библиотеки DLL?

#.net #visual-studio #dll #.net-assembly

Вопрос:

В настоящее время страдаю от DLL-ада, я хотел бы написать сценарий PowerShell для проверки номеров версий библиотек DLL, на которые ссылается проект Visual Studio. Кто-нибудь знает, откуда берется свойство «Версия» для такой библиотеки DLL?

Пример:

Вот панель свойств Visual Studio для ссылки в моем проекте на System.Net.Http:

Версия в области свойств Visual Studio

Я не могу понять, как программно прочитать это свойство версии.

В PowerShell, если я попытаюсь (get-item <filepath>).VersionInfo , я увижу версию файла и версию продукта, которые, по-видимому, относятся к версии .NET:

 PS C:temp> (get-item $file).VersionInfo.ToString()
File:             C:Working...packagesSystem.Net.Http.4.3.2libnet46System.Net.Http.dll
InternalName:     System.Net.Http.dll
OriginalFilename: System.Net.Http.dll
FileVersion:      4.6.25220.01
FileDescription:  System.Net.Http
Product:          Microsoft® .NET Framework
ProductVersion:   4.6.25220.01. Commit Hash: 936d52df0532d56a19ff8486bc9aa7eac19860b3
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language:         Language Neutral
 

Я попытался использовать отражение, чтобы посмотреть на сборку, и это дало мне версию среды выполнения:

 PS C:temp> $assembly = [Reflection.Assembly]::Loadfile($file)
PS C:temp> $assembly.ImageRuntimeVersion
v4.0.30319
 

Затем я попытался посмотреть версию в имени сборки:

 PS C:temp> $assemblyName = $assembly.GetName()
PS C:temp> $assemblyName.Version.ToString()
4.0.0.0
 

Ни один из них не соответствует версии на панели свойств Visual Studio.