方法 : 発行者ポリシーを作成する

アセンブリの販売元は、アップグレードしたアセンブリに発行者ポリシー ファイルを含めることにより、より新しいバージョンのアセンブリを使用してアプリケーションを実行するように指示できます。 発行者ポリシー ファイルには、アセンブリのリダイレクトやコード ベース設定を指定し、その書式にはアプリケーション構成ファイルと同じ書式を使用します。 発行者ポリシーファイルをコンパイルしてアセンブリを生成し、グローバル アセンブリ キャッシュに配置します。

発行者ポリシーは、次の手順で作成します。

  1. 発行者ポリシー ファイルを作成します。

  2. 発行者ポリシー アセンブリを作成します。

  3. その発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加します。

発行者ポリシーのスキーマについては、「アセンブリ バージョンのリダイレクト」を参照してください。 myAssembly のあるバージョンを別のバージョンにリダイレクトする発行者ポリシー ファイルを次の例に示します。

<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 引数には、プロセッサ固有のアセンブリが対象とするプラットフォームを指定します。 amd64、ia64、msil、または x86 を指定できます。

      メモメモ

      .NET Framework Version 2.0 では、特定のプロセッサ アーキテクチャを対象にできるようになりました。

    policy.1.0.myAssembly という発行者ポリシー アセンブリを発行者ポリシー ファイル pub.config から作成し、そのアセンブリに sgKey.snk ファイル内のキー ペアを使用して厳密な名前を割り当て、x86 プロセッサ アーキテクチャを対象とするアセンブリを指定するコマンドを次に示します。

    al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
    

    発行者ポリシー アセンブリは、適用先アセンブリのプロセッサ アーキテクチャと一致している必要があります。 したがって、アセンブリの ProcessorArchitecture 値が MSIL である場合、そのアセンブリの発行者ポリシー アセンブリは /platform:anycpu を使用して作成されている必要があります。 ポリシー固有のアセンブリごとに個別の発行者ポリシー アセンブリを指定する必要があります。

    この規則により、アセンブリのプロセッサ アーキテクチャを変更する場合、バージョン番号のメジャー部分またはマイナー部分を変更して、正しいプロセッサ アーキテクチャで新しい発行者ポリシー アセンブリを指定する必要があります。 アセンブリに異なるプロセッサ アーキテクチャが指定されていると、古い発行者ポリシー アセンブリがアセンブリにサービスを提供できません。

    また、この規則により、常にプロセッサ アーキテクチャが指定されるため、以前のバージョンの .NET Framework を使用してコンパイルしたアセンブリに対しては、バージョン 2.0 のリンカーを使用して発行者ポリシー アセンブリを作成できません。

発行者ポリシー アセンブリのグローバル アセンブリ キャッシュへの追加

発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加するには、グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用します。

発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加するには

  • コマンド プロンプトに次のコマンドを入力します。

    gacutil /i publisherPolicyAssemblyFile

    policy.1.0.myAssembly.dll をグローバル アセンブリ キャッシュに追加するコマンドを次に示します。

    gacutil /i policy.1.0.myAssembly.dll
    
    重要 :重要

    発行者ポリシー アセンブリは、元の発行者ポリシー ファイルがアセンブリと同じディレクトリにある場合を除き、グローバル アセンブリ キャッシュに追加できません。

参照

参照

ランタイム設定スキーマ

概念

ランタイムがアセンブリを検索する方法

アセンブリ バージョンのリダイレクト

その他の技術情報

アセンブリを使用したプログラミング

構成ファイル

アプリケーションの設定

.NET Framework の構成ファイル スキーマ