メモ: dllファイルのPublicKeyTokenの確認方法

dllファイルのPublicKeyTokenの確認方法が分からなくて調べたのでメモしておきます。

PublicKeyTokenは、.NET WebアプリケーションのWeb.configにコンパイルの設定値として書かれたアセンブリ名などで見かけます。こういうものです。

<configuration>
  <system.web>
   <compilation>
      <assemblies>
         <add assembly="System.Data, Version=1.0.2411.0, 
                        Culture=neutral, 
                        PublicKeyToken=b77a5c561934e089"/>
      </assemblies>
   </compilation>
  </system.web>

</configuration>

http://msdn.microsoft.com/ja-jp/library/bfyb45k1(v=vs.100).aspx から引用)

PublicKeyTokenとは、PublicKeyに64bitハッシュをかけた値だそうです。(c.f. CLR via C#

方法1

エクスプローラでdllファイルを右クリックして、[プロパティー]を選択すると、PublicKeyTokenを確認できます。

方法2

プロパティーを開いてもPublicKeyTokenが表示されない場合があります。そういうときは、.NET Framework String Name Utility(Sn.exe)を使います。

Sn.exeは、Windows SDKと一緒にインストールされるので、MicrosoftSDKsフォルダのサブフォルダの下にあります。手元のマシンでは、32bit版は C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ に、64bit版は C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\ にありました。

Sn.exeの実行は、コマンドプロンプトからではなく、Visual Studio コマンドプロンプトWindows SDK コマンドプロンプトを使うことが推奨されています。

Sn.exeにTオプションをつけて次のように実行すると、PublicKeyTokenを確認できます。

sn -T アセンブリ名

オプションをつけずに、あるいはhオプションをつけて実行すると、他のオプション一覧が表示されます。