私は最近、まったく同じことをしようとしていました (今回は VS 2015 を使用しましたが、結果は同じであると確信しています)。
PFX ファイルはデフォルトでパスワード保護されており、(この記事の執筆時点では) ILMerge はそれらをサポートしていないようです。
手動署名
あなたが説明した「巧妙な回避策」がここに示されています。これがこれを達成する唯一の方法のようです。
>sn -p some.pfx some.pub
>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -R merged\some.dll some.pfx
PFX ファイルから公開鍵を抽出するにはユーザー入力が必要であることに注意してください。以前はパスワードをパイプで渡すことができたと言われていますが、現在のバージョンのsn.exe
ではコンソールのリダイレクトが許可されていません。
自動 (CI ビルド システム) 署名
自動化された方法で ILMerged アセンブリに強力な署名を付けるには、それらのキーをローカル ビルド マシンにインストールする必要があります。これには、パスワード入力の形式でのユーザー入力が必要ですが、ビルド マシンごとに 1 回だけ実行する必要があります。
以前と同様に、PFX ファイルから公開鍵を抽出する必要があります (これは 1 回だけ行う必要があり、PUB ファイルは PFX と共に保存することも、ソースにチェックインすることもできます)。
ワンタイム セットアップ コードは次のとおりです (どちらもパスワードの入力が必要です)。
>sn -p some.pfx some.pub
>sn -i some.pfx SomeContainerName
自動ビルド中に、次を実行できるようになりました。
>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -Rc merged\some.dll SomeContainerName