厳密名アセンブリ (アセンブリ署名) (C++/CLI)

このトピックでは、アセンブリに署名する方法について説明します。"アセンブリに厳密な名前を与える" と呼ばれることがよくあります。

解説

Visual C++ を使っているときに、リンカー オプションを使ってアセンブリに署名し、アセンブリ署名の次の CLR 属性に関連する問題を回避します。

属性を使わない理由としては、キー名がアセンブリ メタデータで公開されるという事実があります。これにより、ファイル名に機密情報が含まれる場合、セキュリティ リスクになる可能性があります。 また、Visual C++ の開発環境によって使われるビルド プロセスでは、CLR 属性を使ってアセンブリに厳密な名前を付けた後、アセンブリに対して mt.exe のような後処理ツールを実行すると、アセンブリの署名に使われているキーが無効になります。

コマンド ラインでビルドし、リンカー オプションを使ってアセンブリに署名した後、後処理ツール (mt.exe など) を実行した場合は、sn.exe を使ってアセンブリに再署名する必要があります。 または、アセンブリのビルドと遅延署名を行い、後処理ツールを実行した後で署名を行ってもかまいません。

開発環境でビルドするときに署名属性を使用する場合は、ビルド後のイベントで sn.exe (Sn.exe (厳密名ツール)) を明示的に呼び出すことによって、アセンブリに正常に署名できます。 詳細については、「ビルド イベントの指定」を参照してください。 属性とビルド後イベントを使用すると、リンカー オプションを使用するより、ビルド時間が短くなる可能性があります。

次のリンカー オプションで、アセンブリの署名がサポートされています。

厳密なアセンブリについて詳しくは、「厳密な名前付きアセンブリの作成と使用」をご覧ください。

関連項目

C++/CLI (Visual C++) による .NET プログラミング