このトピックはまだ評価されていません - このトピックを評価する

AssemblyName クラス

2013/12/12

アセンブリの一意の ID を完全に記述します。

System.Object
  System.Reflection.AssemblyName

Namespace:  System.Reflection
アセンブリ:  mscorlib (mscorlib.dll 内)
public sealed class AssemblyName

AssemblyName 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドAssemblyName()AssemblyName クラスの新しいインスタンスを初期化します。
パブリック メソッドAssemblyName(String)指定した表示名を使用して AssemblyName クラスの新しいインスタンスを初期化します。
このページのトップへ
  名前説明
パブリック プロパティCodeBaseアセンブリの場所を表す URL を取得または設定します。
パブリック プロパティContentTypeアセンブリが格納するコンテンツの種類を示す値を取得または設定します。
パブリック プロパティCultureInfoアセンブリによってサポートされるカルチャを取得または設定します。
パブリック プロパティCultureNameアセンブリに関連付けられたカルチャの名前を取得または設定します。
パブリック プロパティFlagsアセンブリの属性を取得または設定します。
パブリック プロパティFullNameアセンブリの完全名を取得します。この名前は表示名とも呼ばれます。
パブリック プロパティHashAlgorithmアセンブリ マニフェストが使用するハッシュ アルゴリズムを取得または設定します。
パブリック プロパティNameアセンブリの簡易名を取得または設定します。必ずそうとは限りませんが、これは通常、アセンブリのマニフェスト ファイルのファイル名から拡張子を取り除いたものになります。
パブリック プロパティVersionアセンブリのメジャー番号、マイナー番号、ビルド番号、リビジョン番号を取得または設定します。
パブリック プロパティVersionCompatibility他のアセンブリとのアセンブリの互換性に関する情報を取得または設定します。
このページのトップへ
  名前説明
パブリック メソッドCloneこの AssemblyName オブジェクトのコピーを作成します。
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetPublicKeyアセンブリを識別する公開キーを取得します。
パブリック メソッドGetPublicKeyToken公開キー トークン (アプリケーションまたはアセンブリに署名するときに使用した公開キーの SHA-1 ハッシュの最後の 8 バイト) を取得します。
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーReferenceMatchesDefinition2 つのアセンブリ名が等しいかどうかを示す値を返します。比較は簡易アセンブリ名に基づいて行われます。
パブリック メソッドSetPublicKeyアセンブリを識別する公開キーを設定します。
パブリック メソッドSetPublicKeyToken公開キー トークン (アプリケーションまたはアセンブリに署名するときに使用した公開キーの SHA-1 ハッシュの最後の 8 バイト) を設定します。
パブリック メソッドToStringアセンブリの完全名を返します。この名前は表示名とも呼ばれます。 (Object.ToString() をオーバーライドします。)
このページのトップへ

AssemblyName オブジェクトにはアセンブリに関する情報が格納されています。この情報を使用してそのアセンブリへのバインドを行うことができます。アセンブリの ID は、次に示す要素から構成されます。

  • 簡易名。

  • バージョン番号。

  • 暗号化キー ペア。

  • サポートされているカルチャ。

簡易名は通常、マニフェスト ファイルの名前です (拡張子を除く)。キー ペアには、厳密な名前によるアセンブリの署名を作成するために使用する公開キーと秘密キーが含まれます。

入れ子になったクラスに対して、共通言語ランタイムをサポートするすべてのコンパイラは簡易名を生成し、リフレクションが、照会されたときに次の表の規則に従って完全限定名を生成します。

Delimiter

説明

円記号 (\)

エスケープ文字。

コンマ (,)

アセンブリ名の前に置きます。

プラス記号 (+)

入れ子になったクラスの前に置きます。

たとえば、クラスの完全修飾名は次のようになります。

ContainingClass+NestedClass,MyAssembly

"++" は "\+\+"、"\" は "\\" となります。

この修飾名は永続化でき、後で Type を読み込むために使用できます。Type を検索して読み込むには、型名だけ、またはアセンブリ修飾型名のいずれかを指定して GetType を使用します。型名だけを指定して GetType を使用した場合は、呼び出し元のアセンブリの Type だけが検索され、次に System アセンブリが検索されます。アセンブリ修飾型名を指定して GetType を使用した場合は、任意のアセンブリ内の Type が検索されます。

AssemblyName を完全に指定する場合、名前、カルチャ、公開キーまたは公開キー トークン、メジャー バージョン、マイナー バージョン、ビルド番号、リビジョン番号の各パラメーターを指定する必要があります。最後の 4 パラメーターは、Version 型にパッケージ化されます。

簡易名を作成するには、既定のコンストラクターを使用して AssemblyName オブジェクトを作成し、Name を設定します。他のプロパティは省略可能です。

完全な厳密な名前を作成するには、既定のコンストラクターを使用して AssemblyName オブジェクトを作成し、Name プロパティを設定してから、SetPublicKey メソッドと SetPublicKeyToken メソッドを使用して公開キーを追加します。他のプロパティは省略可能です。SetPublicKey および SetPublicKeyToken を使用して、公開キーと厳密な名前を設定します。厳密な名前による署名では、必ず SHA1 ハッシュ アルゴリズムが使用されます。

名前を確実に正しく構築するには、次のプロパティを使用します。

厳密な名前を部分的に指定して作成するには、既定のコンストラクターを使用して AssemblyName オブジェクトを作成し、名前と公開キーを設定します。AssemblyName などを使用して作成したアセンブリには、アセンブリ リンカー (Al.exe) を使用して後から署名できます。

公開キーと KeyPair には、矛盾する値を指定できます。このことが、開発において役に立つ場合があります。この場合、GetPublicKey で取得される公開キーには正しい公開キーを指定し、KeyPair には開発中に使用する公開キーと秘密キーを指定します。ランタイムによって KeyPair と公開キーの矛盾が検出されると、公開キーと一致する正しいキーがレジストリ内で検索されます。

AssemblyName の表示名の書式は、次のように、名前から始まるコンマ区切りの Unicode 文字列です。

Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'

Name はアセンブリの名前を表すテキストです。CultureInfo は、RFC1766 の書式で定義されているカルチャです。MajorMinorBuild、および Revision は、アセンブリのメジャー バージョン、マイナー バージョン、ビルド番号、およびリビジョン番号です。StrongName は、SHA-1 ハッシュ アルゴリズムと SetPublicKey で指定された公開キーを使用して生成される公開キーのハッシュ値の下位 64 ビットを 16 進エンコードした値です。PublicKeyToken は、SetPublicKey で指定され、16 進値にエンコードされた公開キーです。

16 進値にエンコードするとは、バイナリ オブジェクトの各バイトを最下位バイトから最上位バイトの順に、16 進値を表す 2 桁の英数文字に変換することです。必要に応じて、他の表示値が追加される場合もあります。

完全な公開キーが明らかな場合は、StrongName の代わりに PublicKey を使用できます。

また、Name は先頭に指定する必要がありますが、その他のパラメーターの順序は重要ではありません。特に設定されていないパラメーター (VersionCultureStrongName、または PublicKey) は省略されたと見なされ、AssemblyName は部分的に指定されていると解釈されます。部分的な情報を指定する場合は、上で説明した順序で Name パラメーターを指定する必要があります。

表示名を指定するときに StrongName =null または PublicKey= null と指定した場合は、簡易名を持つアセンブリにバインドする必要があることや、そのようなアセンブリに一致する必要があることを示します。また、Culture= "" (空の文字列を表す二重引用符) を指定すると、既定のカルチャに一致するように指定したことになります。

既定のカルチャ設定を持つ簡易名のアセンブリに対する AssemblyName のコード例を次に示します。

ExampleAssembly, Culture=""

カルチャ "en" を使用し、厳密な名前を持つアセンブリに対して完全に指定した参照のコード例を次に示します。

ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012

このセクションには、2 つの例が含まれています。最初の例は、AssemblyName(String) コンストラクターを使用して、完全なアセンブリ名を格納する文字列を解析する方法を示しています。2 番目の例は、アセンブリ名を作成し、それを使用して動的アセンブリを定義する方法を示しています。

例 1

.NET Framework アセンブリの完全名を取得してから、AssemblyName(String) コンストラクターを使用してその名前を解析し、AssemblyName のプロパティとメソッドを使用して各部分を表示する例を次に示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;

public class Example
{
   private const byte mask = 15;
   private const string hex = "0123456789ABCDEF";

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Use AssemblyName to parse full assembly names. In this example, the 
      // assembly is mscorlib.dll.
      string name = typeof(string).Assembly.FullName;
      AssemblyName asmName = new AssemblyName(name);

      outputBlock.Text += String.Format("Name: {0}\n", asmName.Name);

      outputBlock.Text += String.Format("Version: {0}\n", asmName.Version);

      outputBlock.Text += String.Format("CultureInfo: {0}\n", asmName.CultureInfo);

      System.Text.StringBuilder pkt = new System.Text.StringBuilder();
      foreach( byte b in asmName.GetPublicKeyToken() )
      {
         pkt.Append(hex[b / 16 & mask]);
         pkt.Append(hex[b & mask]);
      }
      outputBlock.Text += String.Format("PublicKeyToken: {0}\n", pkt.ToString());

      outputBlock.Text += String.Format("FullName: {0}\n", asmName.FullName);
   }
}

/* This example produces output similar to the following:

Name: mscorlib
Version: 2.0.5.0
CultureInfo: 
PublicKeyToken: 7CEC85D7BEA7798E
FullName: mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
 */


例 2

AssemblyName を作成し、それを使用して動的アセンブリを作成する例を次に示します。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;
using System.Reflection.Emit;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Create an AssemblyName, set its properties, and use it to define a dynamic
      // assembly.
      AssemblyName aName = new AssemblyName("MyDynamicAssembly");
      aName.CultureInfo = new System.Globalization.CultureInfo("en-US");
      aName.Version = new Version("1.0.0.2001");

      AssemblyBuilder ab = 
         AppDomain.CurrentDomain.DefineDynamicAssembly(aName, AssemblyBuilderAccess.Run);
      ModuleBuilder mb = ab.DefineDynamicModule("Temp");
      TypeBuilder tb = mb.DefineType("Dummy", TypeAttributes.Public);

      Type t = tb.CreateType();

      outputBlock.Text += String.Format("Assembly FullName: {0}\n", t.Assembly.FullName);
   }
}

/* This code example produces output similar to the following:

Assembly FullName: MyDynamicAssembly, Version=1.0.0.2001, Culture=en-US, PublicKeyToken=null
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.