Side-by-side アセンブリを作成するためのガイドライン

次のガイドラインでは、独自の COM または Win32 side-by-side アセンブリを作成する方法について説明します。 サポートされている Microsoft side-by-side アセンブリのいずれかによって必要な機能が提供されている場合は、独自の side-by-side アセンブリを作成する必要はありません。 この場合は、Microsoft によって提供されるアセンブリを使用して、 分離アプリケーションと Side-by-side アセンブリを使用したで side-by-side アセンブリを使用する手順に従います。

まず、コンポーネントが side-by-side アセンブリに適した候補を作成するかどうかを検討します。 詳細については、「 side-by-side アセンブリとして共有コンポーネントを提供する必要がありますか」を参照してください。

Side-by-side アセンブリを作成するには、次のガイドラインに従います。

  • アセンブリに含めるリソースを決定します。 アセンブリは、常にアプリケーションと顧客に提供される1つ以上のファイルで構成されることに注意してください。 アセンブリは、名前付け、バインド、バージョン管理、デプロイ、および 既定の構成に使用される基本単位として機能します。 一般的な規則として、2つのリソースが同じアセンブリに属しているかどうかがわからない場合は、別々のアセンブリに配置するように作成することをお勧めします。 通常、side-by-side アセンブリは1つの DLL で構成されます。
  • アセンブリのアセンブリ マニフェスト を作成します。 マニフェストには、アセンブリ内の COM オブジェクトまたはタイプライブラリが記述されている必要があります。 アセンブリマニフェストに作成する内容の詳細については、「 アセンブリマニフェスト」を参照してください。
  • 複数のバージョンのアセンブリがシステムで実行されている場合に、オブジェクトの使用状況を評価します。 異なるバージョンのアセンブリが、メモリマップトファイル、名前付きパイプ、登録 Windows メッセージとクラス、共有メモリ、セマフォ、ミューテックス、ハードウェアドライバーなど、別々のデータ構造を必要とするかどうかを判断します。 アセンブリのバージョン間で使用されるデータ構造は、下位互換性のあるバージョンである必要があります。 バージョン間で使用できるデータ構造と、バージョンに対してプライベートである必要があるデータ構造を決定します。 共有データ構造に、セマフォやミューテックスなどの個別の同期オブジェクトが必要かどうかを判断します。
  • サイドバイ サイドアセンブリの dll の作成に関するガイドラインに従って、side-by-side アセンブリとして機能するように dll を作成します。
  • 一連のヘッダーファイルとヘルパー関数を作成して、アセンブリの状態を含むレジストリキーを簡単にバージョン管理できるようにします。 一般に、アセンブリは、レジストリキーに状態設定を保存します。 レジストリ設定は、同時に実行される可能性のある複数のアセンブリバージョンを分離するために、個別のバージョンで記述する必要があります。 Side-by-side アセンブリと DLL を設計して、side-by-side 共有のシナリオでアセンブリの状態を正しく格納および処理します。 サイドバイサイドアセンブリについては、オーサリング状態 Storageのガイドラインに従ってください。
  • プライベートアセンブリを使用するアプリケーションの開発者は、アプリケーションディレクトリをセキュリティで保護する必要があります。 アプリケーションがWindows インストーラーを使用してインストールされている場合は、lockpermissions テーブルを使用してアプリケーションディレクトリをセキュリティで保護することができます。 通常、システムには、プライベートアセンブリに対する読み取り、書き込み、および実行アクセス権が付与されます。他のすべてのプロセスには、実行と読み取りアクセスのみが与えられます。
  • Side-by-side 共有を使用するシナリオを使用してアセンブリをテストし、それが有効な side-by-side アセンブリであることを確認します。 アセンブリが正常にインストールされた場合は、正常に動作することを保証するために十分ではありません。
  • アセンブリの更新番号を付ける方法を採用します。 各アセンブリは、4つの部分で構成されるバージョン番号に関連付けられています。 左から右に、メジャー、マイナー、ビルド、リビジョンの各部分は、ピリオドで区切られます。 以前のバージョンと互換性のないバージョンのアセンブリのメジャー番号またはマイナー番号を変更します。 アセンブリに対する下位互換性のある変更については、ビルド部分とリビジョン部分のみを変更します。 たとえば、開発者は、すべて1.0.0 の番号付け方法を採用する場合があります。 * バージョン番号は、バージョンをアセンブリバージョン1.0.0.0 に更新することを意味します。