Visual C# でグローバル アセンブリ キャッシュにアセンブリをインストールする方法

Microsoft Visual Basic .NET については、次の資料を参照してください。315682

この資料の内容

概要
この資料では、アセンブリの厳密な名前を生成して、グローバル アセンブリ キャッシュに .dll ファイルをインストールする方法について説明します。グローバル アセンブリ キャッシュ (GAC) を使用すると、アセンブリを多くのアプリケーションで共有できます。GAC は、.NET ランタイムのインストール時に自動的にインストールされます。通常、コンポーネントは C:\WINNT\assembly または C:\WINDOWS\assembly に保存されます。

アセンブリを GAC にインストールするには、アセンブリに厳密な名前を付ける必要があります。実際にはこれは名前ではなく、暗号化されたハッシュ キー、つまり署名です。厳密な名前を使用すると、コンポーネントのバージョン管理を適切に行うことができます。その結果、同じ名前のコンポーネントで競合が発生したり、不適切なコンポーネントがアプリケーションで使用されたりすることを防ぐことができます。

先頭に戻る

必要条件

次の一覧は、推奨する必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack です。
  • 共有するアセンブリをインストールする先のコンピュータでの管理者権限

この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。
  • .NET のアセンブリや Visual Studio 2005 についての一般的な知識
  • コマンド プロンプトからのツールの使用に関する一般的な知識
先頭に戻る

グローバル アセンブリ キャッシュ

Visual Studio .NET または Visual Studio 2005 を使用して小さなクラス ライブラリ プロジェクトを作成し、厳密な名前を生成し、グローバル アセンブリ キャッシュにプロジェクトの .dll ファイルをインストールするには、以下の手順を実行します。
  1. Visual Studio .NET または Visual Studio 2005 で、新しい Visual C# .NET クラス ライブラリ プロジェクトを作成し、プロジェクトに GACDemo という名前を付けます。
  2. 厳密な名前が必要です。この暗号化されたキー ペアを生成するには、SN ツールを使用します。このツールは、.NET Framework Solution Developer Kit (SDK) のインストール先の \bin サブディレクトリにあります。SN ツールの使用法は簡単です。コマンド ラインで、次の構文を使用します。
    sn -k "DriveLetter:\DirectoryToPlaceKey\KeyName.snk"
  3. ここでは、C:\ に GACKey という名前のディレクトリを作成して、コマンド プロンプトからキーを簡単に見つけてアクセスできるようにします。

    : 大部分のユーザー環境では、.NET ツールは C:\Program Files\Microsoft.NET\FrameworkSDK\Bin にあります。次の SN コマンドを入力する前に、コンピュータの .NET bin ディレクトリのパスをコピーし、コマンド ラインで cd と入力し、右クリックしてパスを貼り付け、Enter キーを押すと、SN ツールがあるディレクトリに簡単に移動できます。

    次のように入力します。
    sn -k "C:\GACKey\GACKey.snk"
  4. キーが生成されますが、このキーはまだプロジェクトのアセンブリと関連付けられていません。この関連付けを行うには、Visual Studio .NET のソリューション エクスプローラで [AssemblyInfo.cs] ファイルをダブルクリックします。Visual Studio .NET でプロジェクトを作成したときに、このファイルにデフォルトで含まれるアセンブリ属性の一覧で、AssemblyKeyFile 属性を次のように変更します。
    [assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
    Ctrl + Shift + B キーを押してプロジェクトをコンパイルします。.dll ファイルを GAC にインストールするのに、これ以上のコードは不要です。
  5. .dll ファイルをインストールするには Gacutil ツールを使用するか、.dll ファイルを適切なディレクトリにドラッグします。Gacutil ツールを使用する場合は、次のコマンドを使用できます。
    gacutil -I "DriveLetter:\PathToBinDirectoryInVSProject\GACdemo.dll"
    ファイルをドラッグする場合は、エクスプローラを使用します。エクスプローラのインスタンスを 2 つ開きます。一方では、コンソール プロジェクトの .dll ファイルの出力先に移動します。もう一方では、c:\[SystemRoot]\assembly に移動します。

    .dll ファイルを assembly フォルダにドラッグし、ドロップします。
先頭に戻る

サンプル コード (AssemblyInfo.cs) の完全なリスト

using System.Reflection;using System.Runtime.CompilerServices;//// General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information// that is associated with an assembly.//[assembly: AssemblyTitle("")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("")][assembly: AssemblyProduct("")][assembly: AssemblyCopyright("")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]//// Version information for an assembly is made up of the following four values:////      Major Version//      Minor Version //      Build Number//      Revision//// You can specify all the values, or you can default the revision and build numbers // by using the '*' as shown below:[assembly: AssemblyVersion("1.0.*")]//// To sign your assembly you must specify a key to use. See the // Microsoft .NET Framework documentation for more information about assembly signing.//// Use the following attributes to control that key is used for signing. //// Notes: //   (*) If no key is specified, the assembly is not signed.//   (*) KeyName refers to a key that has been installed in the Crypto Service//       Provider (CSP) on your computer. KeyFile refers to a file that contains//       a key.//   (*) If the KeyFile and the KeyName values are both specified, the //       following processing occurs://       (1) If the KeyName can be found in the CSP, that key is used.//       (2) If the KeyName does not exist and the KeyFile does exist, the key //           in the KeyFile is installed to the CSP and used.//   (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.//       When specifying the KeyFile, the location of the KeyFile must be//       relative to the project output directory which is//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is//       located in the project directory, you would specify the AssemblyKeyFile //       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework//       documentation for more information about this.//[assembly: AssemblyDelaySign(false)][assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")][assembly: AssemblyKeyName("")]
先頭に戻る

検証

  1. エクスプローラを起動します。
  2. C:\SystemRoot\assembly に移動します。
  3. インストールされている .dll ファイルの一覧に GACDemo が表示されます。
先頭に戻る
関連情報
詳細については、下記のマイクロソフト Web サイトを参照してください。
グローバル アセンブリ キャッシュへのアセンブリのインストール
http://msdn.microsoft.com/library/ja/cpguide/html/cpconInstallingAssemblyIntoGlobalAssemblyCache.asp
先頭に戻る
プロパティ

文書番号:815808 - 最終更新日: 10/04/2006 00:08:48 - リビジョン: 3.4

Microsoft Visual C# 2005, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1

  • kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808
フィードバック