方法: 発行者ポリシーを作成する
Note
この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含めて、.NET の新しい実装には適用されません。
アセンブリのベンダーは、アップグレードされたアセンブリに発行者ポリシー ファイルを含めることにより、より新しいバージョンのアセンブリをアプリケーションで使用する必要があることを説明できます。 発行者ポリシー ファイルは、アセンブリのリダイレクトとコード ベースの設定を指定するものであり、アプリケーション構成ファイルと同じ形式を使用します。 発行者ポリシー ファイルは、アセンブリにコンパイルされて、グローバル アセンブリ キャッシュに配置されます。
発行者ポリシーを作成するには、3 つのステップが必要です。
発行者ポリシー ファイルを作成します。
発行者ポリシー アセンブリを作成します。
発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加します。
発行元ポリシーのスキーマについては、「アセンブリ バージョンのリダイレクト」を参照してください。 次の例では、myAssembly
の 1 つのバージョンを別のものにリダイレクトする発行者ポリシー ファイルを示します。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Redirecting to version 2.0.0.0 of the assembly. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
コード ベースを指定する方法については、「アセンブリの場所の指定」を参照してください。
発行者ポリシー アセンブリの作成
発行者ポリシー アセンブリを作成するには、アセンブリ リンカー (Al.exe) を使用します。
発行者ポリシー アセンブリを作成するには
コマンド プロンプトに、次のコマンドを入力します。
al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture
このコマンドの説明:
publisherPolicyFile
引数は、発行者ポリシー ファイルの名前です。publisherPolicyAssemblyFile
引数は、このコマンドから生成される発行者ポリシー アセンブリの名前です。 アセンブリ ファイル名は、次の形式に従う必要があります。"policy.majorNumber.minorNumber.mainAssemblyName.dll"
keyPairFile
引数は、キー ペアが格納されているファイルの名前です。 アセンブリと発行者ポリシー アセンブリには、同じキー ペアで署名する必要があります。processorArchitecture
引数は、プロセッサ固有のアセンブリの対象となるプラットフォームを示します。Note
特定のプロセッサ アーキテクチャを対象にする機能は、.NET Framework 2.0 以降で使用できます。
特定のプロセッサ アーキテクチャを対象にする機能は、.NET Framework 2.0 以降で使用できます。 次のコマンドを実行すると、pub.config
という発行者ポリシー ファイルから policy.1.0.myAssembly
という発行者ポリシー アセンブリが作成され、sgKey.snk
ファイルのキー ペアを使用してアセンブリに厳密な名前が割り当てられて、アセンブリの対象が x86 プロセッサ アーキテクチャであることが指定されます。
al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
発行者ポリシー アセンブリは、適用対象のアセンブリのプロセッサ アーキテクチャと一致している必要があります。 したがって、アセンブリの MSIL の値が ProcessorArchitecture の場合は、そのアセンブリの発行者ポリシー アセンブリを /platform:anycpu
で作成する必要があります。 プロセッサ固有のアセンブリごとに、個別の発行者ポリシー アセンブリを提供する必要があります。
このルールの結果として、アセンブリのプロセッサ アーキテクチャを変更するには、バージョン番号のメジャーまたはマイナー コンポーネントを変更して、正しいプロセッサ アーキテクチャの新しい発行者ポリシー アセンブリを提供できるようにする必要があります。 アセンブリが異なるプロセッサ アーキテクチャになった場合、古い発行者ポリシー アセンブリではアセンブリを処理できません。
もう 1 つの影響として、バージョン 2.0 のリンカーを使用して、以前のバージョンの .NET Framework を使用してコンパイルされたアセンブリ用の発行者ポリシー アセンブリを作成することはできません。これは、常にプロセッサ アーキテクチャが指定されるためです。
グローバル アセンブリ キャッシュへの発行者ポリシー アセンブリの追加
グローバル アセンブリ キャッシュに発行者ポリシー アセンブリを追加するには、グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用します。
発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加するには
コマンド プロンプトに、次のコマンドを入力します。
gacutil /i publisherPolicyAssemblyFile
次のコマンドを実行すると、policy.1.0.myAssembly.dll
がグローバル アセンブリ キャッシュに追加されます。
gacutil /i policy.1.0.myAssembly.dll
重要
/link
引数で指定されている元の発行者ポリシー ファイルがアセンブリと同じディレクトリにない場合、発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加することはできません。
関連項目
.NET