配置と依存関係

更新 : 2007 年 11 月

Visual Studio の配置ツールは、プロジェクトにプロジェクト出力グループ、アセンブリ、またはマージ モジュールが追加されるたびに、自動的に依存関係を検出し、配置プロジェクトに追加します。ただし、依存関係を検出できない場合もあります。

12w3fhd2.alert_note(ja-jp,VS.90).gifヒント :

配置プロジェクトにアセンブリを直接追加するのではなく、アセンブリを含むプロジェクト出力グループを追加することをお勧めします。配置ツールでは、プロジェクト出力グループの方が簡単に依存関係を検出できます。

アセンブリの場合は、ほかのアセンブリとの依存関係が検出されます。ただし、アセンブリが COM .dll などのアンマネージ コンポーネントを参照する場合、そのコンポーネントの依存関係は検出されません。同様に、配置プロジェクトに直接追加されたファイルについても、依存関係が検出されないことがあります。アプリケーションの実行には通常は依存ファイルが必要ですが、どちらの場合も、インストーラの実行は妨げられません。

この問題を防ぐため、まず依存関係の種類を見極め、適切な処置を行う必要があります。

  • 参照先のコンポーネントが、他の製品の一部としてだけインストールされている場合。たとえば、Web Browser コントロール (shdocvw.dll) は、Internet Explorer の一部としてインストールされています。

    この場合は、まず配置プロジェクトからコンポーネントを除外します。次に、起動条件を追加して、ターゲット コンピュータでのコンポーネントの有無をチェックし、存在しない場合はインストールを行わないようにします。エンド ユーザーは、アプリケーションをインストールする前に、コンポーネントを提供する製品をインストールする必要があります。

  • 追加しようとしているアンマネージ コンポーネントが、依存関係のすべてを公開していない場合。たとえば、MFC (Microsoft Foundation Class) は、ローカライズしたサテライト ファイルを依存関係として含んでいません。

    この場合は、可能な依存関係をすべて調べ、配置プロジェクトに追加する必要があります。コンポーネントのドキュメントを調べるか、またはコンポーネントの作成者から依存関係の一覧を入手してください。

    12w3fhd2.alert_note(ja-jp,VS.90).gifメモ :

    Depends.exe など、大部分の依存関係チェック ツールは、事前バインディングされた依存関係だけを見つけます。遅延バインディングされる依存関係は、実行時にだけ現れます。

  • 参照先のアセンブリが、アンマネージ コンポーネントとの依存関係を持つ場合。たとえば、System.Data.dll は、MDAC (Microsoft Data Access Components) バージョン 2.8 との依存関係を持ちます。詳細については、「方法 : Microsoft Data Access Components の起動条件を追加する」を参照してください。

    すべての依存ファイルがインストールされるようにするには、コンポーネントとその依存関係を含むマージ モジュールを追加します。場合によっては、コンポーネントの作者に問い合わせて、マージ モジュールが使用できるかどうかを確認する必要があります。Microsoft コンポーネントの多くは、Microsoft の Web サイトでマージ モジュールを入手できます。

    マージ モジュールを入手できない場合は、起動条件を追加して、インストール時にコンポーネントの有無をチェックし、存在しない場合はインストールを行わないようにすることもできます。

参照

処理手順

方法 : プロジェクト出力グループからファイルを除外する

方法 : Microsoft Data Access Components の起動条件を追加する

その他の技術情報

配置での起動条件の管理