遅延署名とテスト署名

厳密名つきのアセンブリ開発において、.NET 1.1 における遅延署名では署名領域を予約して署名検証機能を無効化するという、ぱっとみただけでも危険な方式だった。.NET 2.0 からは sn.exe の新機能のテスト署名 (-TS オプション) によって、厳密名つきアセンブリの開発手順が変化している。
この機能について、ベータ版の頃の構想や記事は発見できるものの、SDK ドキュメント内を簡単に検索しただけでは、明確な文章がみあたらなかった。sn.exe のドキュメントに -TS コマンドラインオプションの説明すらない。*1
使い方は単純で、署名検証を無効化するかわりに、リリース時の再署名と同様に -TS オプションを使用してテスト用の証明書を利用して署名を実行できる、というだけである。

  1. 遅延署名でアセンブリを作成する
  2. 署名検証機能を無効化する
  3. テスト等を実施する
  4. 署名検証機能を有効化し、リリース用証明書で再署名を行う
  5. リリース

という手順から、

  1. 遅延署名でアセンブリを作成する
  2. テスト証明書で再署名する
  3. テスト等を実施する
  4. リリース用証明書で再署名を行う
  5. リリース

という手順にかわった、ということ。

*1:sn.exe -? で表示される usage には -TS は表示される