仕事で本番環境とソースの差分を調査したいということで作業をしていました。
一つのソリューションで全てのプロジェクトを管理しているわけでもないので、まず全てをビルドするバッチの作成に取り掛かりました。
循環参照も含まれるため、バッチを何周もしなければならないという。
差分を調査するdllをソースから生成したものの、dllの数はなんと400近く。
それでも
同僚A「それでも少ないほうだ」
同僚B「xxの商材は、1600」
というギョエーなことが
差分を調査する上で私が取った方法が
- WinMergeを使ってdllの差分があるもの以外は削除
- 差分があるものに対しては、それぞれのdllをdotPeekを使ってExport Assembly to Project
- Exportされて生成されたソースをWinMergeで比較
という方法。
他にも手段は検討してました。
- JustAssembly -> フォルダごとアセンブリの差分を比較するツール。うってつけのツールでしたが、ソースの細かい違いがあると差分とみなされる。
- dnSpy -> 一致するソースでもコメント部分や細かい部分で差分が多い。
dotPeekでデコンパイルした場合、ヘッダ部分に元dllのパスが埋め込まれる程度で、それ以外ではでコンパイル結果が一致しやすく、差分が少なくて調査しやすかったです。
Export Assembly to Projectはdll一つ一つに実行しないとなりませんし、ショートカットキーも使えません。なのでdllが300があったら300回同じ操作をしないとなりません。
それでも頑張れば午前中で作業は終わりました。
で、結果なのですが、差分を調査してくれと言われて覚悟はしていたものの、本番環境とdllの差分はありましたとさ、トホホ。
ソース管理は大事ですね。