.NETの破壊的変更
全然気付かなかったが何気にメンドーな変更。
InformationalVersion
値にコミット情報が埋め込まれるようになっていた。
何がめんどいかというと、System.CommandLine
使ったときのバージョンが否応なしにこれでとっちゃうのね。なので1.00+xxxxxx
とかになる。
これはある意味判断としては正しいと思うんだけど、個人的にCLIツール作ったときにコマンドラインツールで--version
した時にバージョンは外したいので、そういうときは以下のようにすれば切れる。
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
Windows開発で何気にあると便利なツール3選
いまいち使い方は完全に理解してないが、あった方が良いと思ってるツール。
正直こういうののLinux Desktop & Mac OS版の良いツールを知りたいとは思っている…
- Dependencies
- 最低限必要なDLL依存関係などのリストを表示するツール。役立ったことはないが、ツール箱に入れてある。
- プロセス エクスプローラー
- タスクマネージャーのちょっと本格的な版
- プロセス モニター
- これはとある時に大活躍した。DLL開こうとして駄目でしたとか、ソフトの謎のエラー的なやつの追跡に役立つ
dumpbinにPATHを通す
Visual Studioにはdumpbin
というdll解析ツールがある。上のDependenciesでも良いんだけど、これがあるとCLI上でdllのエクスポート関数が何かとか調べられる。恐らくWindowsで使えるlld
コマンドがこれである。
しかし、Visual Studio専用のPowershellしか通常は使えない。これは自分のプロファイルとかに以下みたいな感じでパスを通せば良い。
$vsversion = "2022"
if ($IsWindows -and (Test-Path -Path "C:\Program Files\Microsoft Visual Studio\$vsversion\Community\VC\Tools\MSVC" -PathType Container)) {
$dbdir = $(Get-ChildItem -Recurse -Include "*dumpbin.exe" -Path "C:\Program Files\Microsoft Visual Studio\$vsversion\Community\VC\Tools\MSVC" | Select-Object -First 1 -Property DirectoryName)
if ($dbdir) {
$env:PATH = $env:PATH + ";" + "$($dbdir.DirectoryName)"
}
$dbdir = $null
}
$vsversion = $null