#.net #visual-studio #dll #.net-assembly
Вопрос:
В настоящее время страдаю от DLL-ада, я хотел бы написать сценарий PowerShell для проверки номеров версий библиотек DLL, на которые ссылается проект Visual Studio. Кто-нибудь знает, откуда берется свойство «Версия» для такой библиотеки DLL?
Пример:
Вот панель свойств Visual Studio для ссылки в моем проекте на System.Net.Http:
Я не могу понять, как программно прочитать это свойство версии.
В 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.