厳密な名前でのアセンブリへの署名
厳密な名前でのアセンブリへの署名には、2 つの方法があります。
- .NET Framework SDK に用意されているアセンブリ リンカ (Al.exe) を使用する。
- アセンブリ属性を使用して、厳密な名前情報をコードに挿入する。使用するキー ファイルが配置されている場所に応じて、AssemblyKeyFileAttribute または AssemblyKeyNameAttribute を使用できます。
厳密な名前でアセンブリに署名するには、暗号キー ペアが必要です。キー ペアの作成の詳細については、「キー ペアの作成」を参照してください。
アセンブリ リンカを使用してアセンブリを作成し、厳密な名前でそのアセンブリに署名するには、次のようにします。
コマンド プロンプトに次のコマンドを入力します。
al /out:<assembly name> <module name> /keyfile:<file name>
このコマンドの assembly name は厳密な名前で署名するアセンブリの名前、module name はアセンブリの作成に使用するコード モジュールの名前です。file name はキー ペアを格納するコンテナまたはファイルの名前です。
キー ファイル sgKey.snk
を使用して厳密な名前でアセンブリ MyAssembly.dll
に署名する例を、次に示します。
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
属性を使用して厳密な名前でアセンブリに署名するには、次のようにします。
- コード モジュール内で、厳密な名前でアセンブリに署名するときに使用するキー ペアを格納するファイルまたはコンテナの名前を指定して、AssemblyKeyFileAttribute または AssemblyKeyNameAttribute を追加します。
キー ファイル sgKey.snk
を指定して AssemblyKeyFileAttribute を使用する例を次に示します。
<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[C#]
[assembly:AssemblyKeyFileAttribute(@"..\..\sgKey.snk")]
コンパイル時にアセンブリに遅延署名することもできます。詳細については、「アセンブリへの遅延署名」を参照してください。
厳密な名前でアセンブリに署名すると、アセンブリ リンカ (Al.exe) は、現在のディレクトリと出力ディレクトリを基準にしてキー ファイルを検索します。コマンド ライン コンパイラを使用する場合は、コード モジュールを格納する現在のディレクトリにキーをコピーするだけで十分です。