はじめに
dllファイルのファイルバージョンは「プロパティ」から確認することができますが、アセンブリバージョンを知りたい場合は、Powershellを利用して取得できます。
今回は、対象フォルダにあるDLLファイルのファイルバージョンとアセンブリバージョンを取得して、一覧に出力する備忘録です。
アセンブリバージョンを取得する
まず、対象DLLファイルのアセンブリバージョンは下記のように取得します。
PS> [Reflection.AssemblyName]::GetAssemblyName((Get-ItemProperty '[DLLファイルパス]').FullName)
Version Name
-------- -----
X.X.X.X System.〜〜〜.〜〜〜〜
上記を応用して、ディレクトリ内にあるDLLファイルのファイルバージョンとアセンブリバージョン、対象アセンブリを出力します。
PS> Get-ChildItem -Filter *.dll -Recurse | ForEach-Object {
try {
$_ | Add-Member NoteProperty FileVersion($_.VersionInfo.FileVersion)
$_ | Add-Member NoteProperty AssemblyVersion ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version)
} catch {}
$_
} | Select-Object Name,FileVersion,AssemblyVersion
実際に実行してみた結果は下記の通りです。
想定通りの出力です。
PS C:\Program Files\IIS\Microsoft Web Deploy> Get-ChildItem -Filter *.dll -Recurse | ForEach-Object {
>> try {
>> $_ | Add-Member NoteProperty FileVersion($_.VersionInfo.FileVersion)
>> $_ | Add-Member NoteProperty AssemblyVersion ([Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version)
>> } catch {}
>> $_
>> } | Select-Object Name,FileVersion,AssemblyVersion
Name FileVersion AssemblyVersion
---- ----------- ---------------
Microsoft.Web.Deployment.dll 7.1.622.0 7.1.0.0
Microsoft.Web.Deployment.Tracing.dll 7.1.2606.1246 9.0.0.0
最後に
意外にアセンブリバージョンの情報を知りたい場面は多々あるかと思います。
そういう時はPowershellで取得できてしまうので、是非参考までに。