アセンブリ リンカ (Al.exe)
更新 : 2007 年 11 月
アセンブリ リンカは、モジュールまたはリソース ファイルのいずれかである 1 つ以上のファイルから、アセンブリのマニフェストを含むファイルを生成します。モジュールとは、アセンブリ マニフェストを含まない Microsoft Intermediate Language (MSIL) ファイルのことです。
メモ : |
---|
Windows Vista コンピュータで仮想化されることを回避するには、アセンブリに、要求実行レベルを指定した win32 マニフェストが含まれる必要があります。コマンド ラインから al.exe を直接使用するときには、win32 リソース ファイルにマニフェストを埋め込むことができます。または、ビルド プロセスの後の段階で mt.exe を使用してマニフェストを追加することも可能です。Visual Studio 2008 では、C# と Visual Basic のどちらのコンパイラを使用しても、win32 マニフェストはアセンブリに自動的に埋め込まれます。詳細については、「/win32manifest (カスタムの Win32 マニフェスト ファイルのインポート) (C# コンパイラ オプション)」を参照してください。 |
al sources options
パラメータ
次の sources を 1 つ以上組み合わせて指定できます。
ソース |
説明 |
---|---|
file[,target] |
file (モジュール) の内容を target で名前が指定されたファイルにコピーします。コピーが完了すると、Al.exe は target をコンパイルしてアセンブリを生成します。 |
/embed[resource]:file[,name[,private]] |
file で指定したリソースをアセンブリ マニフェストを含むイメージに埋め込みます。Al.exe は、file の内容をポータブル実行可能 (PE) イメージにコピーします。 name パラメータは、リソースの内部識別子です。既定では、リソースはアセンブリでパブリックに指定されており、他のアセンブリから参照できます。private を指定すると、そのリソースを他のアセンブリから参照できなくなります。 file がリソース ファイル ジェネレータ (Resgen.exe) や開発環境などで作成された .NET Framework リソース ファイルである場合は、System.Resources のメンバを使用してそのファイルにアクセスできます。詳細については、「ResourceManager」を参照してください。それ以外のすべてのリソースに対しては、Assembly の GetManifestResource* メソッドを使用して、実行時にリソースにアクセスします。 リソース ファイルだけが Al.exe に渡された場合は、出力ファイルはサテライト リソース アセンブリになります。 |
/link[resource]:file[,name[,target[,private]]] |
リソース ファイルをアセンブリにリンクします。file によって指定されたリソースがアセンブリの一部になります。ファイルはコピーされません。file パラメータには、任意のファイル形式を指定できます。たとえば、file パラメータとしてネイティブ DLL を指定できます。このようにすると、ネイティブ DLL はアセンブリの一部になるので、グローバル アセンブリ キャッシュにインストールして、アセンブリ内のマネージ コードからアクセスできます。/linkresource コンパイラ オプションを使用して、これを実行することもできます。詳細については、「/linkresource (.NET Framework リソースへのリンク) (C# コンパイラ オプション)」を参照してください。 name パラメータは、リソースの内部識別子です。targetパラメータは、Al.exe が file をコピーする対象のパスおよびファイル名を指定します。コピーが完了すると、Al.exe は target をコンパイルしてアセンブリを生成します。既定では、リソースはアセンブリでパブリックに指定されており、他のアセンブリから参照できます。private を指定すると、そのリソースを他のアセンブリから参照できなくなります。 file がリソース ファイル ジェネレータ (Resgen.exe) や開発環境などで作成された .NET Framework リソース ファイルである場合は、System.Resources 名前空間のメンバを使用してそのファイルにアクセスできます。詳細については、「ResourceManager」を参照してください。それ以外のすべてのリソースに対しては、Assembly クラスの GetManifestResource* メソッドを使用して、実行時にリソースにアクセスします。 リソース ファイルだけが Al.exe に渡された場合は、出力ファイルはサテライト リソース アセンブリになります。 |
指定できる options を次に示します。/out オプションは必ず指定する必要があります。
オプション |
説明 |
---|---|
/algid:id |
アセンブリ マニフェストを含むファイルを除き、マルチファイル アセンブリ内の全ファイルをハッシュするためのアルゴリズムを指定します。既定のアルゴリズムは CALG_SHA1 です。その他のアルゴリズムについては、プラットフォーム SDK の ALG_ID のトピックを参照してください。.NET Framework の最初のリリースでは、CALG_SHA1 および CALG_MD5 だけがサポートされています。 ハッシュ値は、アセンブリ マニフェストのファイル テーブルに格納されます。インストール時や読み込み時に、アセンブリのファイルがそのハッシュと突き合わせされてチェックされます。 このオプションは、任意のモジュールのソース コードでカスタム属性 (AssemblyAlgorithmIdAttribute) として指定することもできます。 |
/base[address]:addr |
実行時にユーザーのコンピュータに DLL を読み込む先のアドレスを指定します。オペレーティング システムにプロセス空間内で DLL を再配置させる代わりに DLL のベース アドレスを指定しておくと、アプリケーションの読み込み速度が速くなります。 |
/bugreport:filename |
バグ レポート用の情報を含むファイル (filename) を作成します。 |
/comp[any]:text |
アセンブリの Company フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、text がそのファイルの Company プロパティとして Microsoft Windows エクスプローラに表示されます。/win32res を指定すると、指定したリソース ファイル内の企業情報が Company プロパティとして Windows エクスプローラに表示されます。 テキストが空の文字列 ("") の場合、Win32 Company リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /company は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyCompanyAttribute) として指定することもできます。 |
/config[uration]:text |
アセンブリの Configuration フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 テキストが空の文字列の場合、Win32 Configuration リソースは単一の空白として表示されます。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyConfigurationAttribute) として指定することもできます。 |
/copy[right]:text |
アセンブリの Copyright フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/copyright が Win32 Copyright リソースとして Windows エクスプローラに表示されます。 テキストが空の文字列の場合、Win32 Copyright リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /copyright は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyCopyrightAttribute) として指定することもできます。 |
/c[ulture]:text |
アセンブリに関連付けるカルチャ文字列を指定します。カルチャとして有効な値は、RFC (Internet Requests for Comments) ドキュメント 1766 『Tags for the Identification of Languages』で定義されている値です。 text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。既定のカルチャ文字列はありません。この文字列は、リフレクションを使用して表示するために使用できます。 有効な text 文字列の詳細については、「CultureInfo」を参照してください。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyCultureAttribute) として指定することもできます。 |
/delay[sign][+|-] |
アセンブリに完全に署名するか、部分的に署名するかを指定します。完全署名されたアセンブリを作成する場合は、/delaysign- を使用します。アセンブリに公開キーだけを含める場合は、/delaysign+ を使います。 アセンブリに完全に署名するように指定すると、Al.exe はマニフェスト (アセンブリ メタデータ) を含むファイルをハッシュし、秘密キーでそのハッシュに署名します。結果として得られるデジタル署名は、マニフェストを含むファイルに格納されます。アセンブリに遅延署名した場合は、署名は算出および格納されず、後で署名を追加できるようにファイル内の空間が予約されます。 既定値は /delaysign- です。 /delaysign オプションは、/keyfile または /keyname と共に使用しなければ無効になります。 たとえば、/delaysign+ を指定すると、テスト時にはアセンブリをグローバル キャッシュに格納できます。テスト後に、アセンブリに秘密キーを含めることにより、そのアセンブリに完全署名できます。
メモ :
グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用して遅延署名アセンブリをグローバル キャッシュに格納する前に、厳密名ツール (Sn.exe) を使用してアセンブリを登録して検証をスキップします。たとえば、「Sn.exe –Vr delaySignedAssembly」と入力します。これは、開発にのみ使用してください。
このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyDelaySignAttribute) として指定することもできます。 |
/descr[iption]:text |
アセンブリの Description フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/description が Win32 Comments リソースとして Windows エクスプローラに表示されます。 テキストが空の文字列の場合、Win32 Comments リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /description は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (Description) として指定することもできます。 |
/e[vidence]:file |
Security.Evidence のリソース名を持つアセンブリに file を埋め込みます。 通常のリソースに対して Security.Evidence を使用することはできません。 |
/fileversion:version |
アセンブリの File Version フィールドに文字列を指定します。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/fileversion が Win32 File Version リソースとして使用されます。/fileversion を指定しないと、Win32 Assembly Version リソースによって Win32 File Version リソースが設定されます。 /win32res を指定した場合は、Win32 リソースに対して /fileversion は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyFileVersionAttribute) として指定することもできます。 |
/flags:flags |
アセンブリの Flags フィールドに値を指定します。flags に指定できる値は次のとおりです。
このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyFlagsAttribute) として指定することもできます。 |
/fullpaths |
エラー メッセージで報告されるすべてのファイルについて、Al.exe が絶対パスを使用するように指定します。 |
/help |
このツールのコマンド構文とオプションを表示します。 |
/keyf[ile]:filename |
アセンブリに署名するためのキー ペアまたは公開キーだけを含むファイル (filename) を指定します。コンパイラは、アセンブリ マニフェストに公開キーを挿入し、最終的なアセンブリに秘密キーで署名します。キー ファイルの生成、およびキー コンテナへのキー ペアのインストールについては、「厳密名ツール (Sn.exe)」を参照してください。 遅延署名を使用する場合は、通常、このファイルには公開キーだけが含まれ、秘密キーは含まれません。 キー ペアの公開キー情報は、アセンブリの .publickey フィールドに表示されます。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyKeyFileAttribute) として指定することもできます。 同じコンパイルで、コマンド ライン オプションまたはカスタム属性によって /keyfile と /keyname の両方が指定された場合、Al.exe はまず、/keyname で指定されたコンテナを検索します。成功すると、キー コンテナ内の情報を使用して、アセンブリが署名されます。キー コンテナを検出できなかった場合、Al.exe は /keyfile で指定されたファイルを検索します。ファイルが検出された場合、アセンブリはキー ファイルの情報で署名され、キー情報はキー コンテナにインストールされるため (Sn.exe の -i オプションと同様)、次のコンパイル時には /keyname オプションが有効となります。 |
/keyn[ame]:text |
キー ペアを保持するコンテナを指定します。これにより、公開キーがアセンブリ マニフェストに挿入され、アセンブリに署名 (厳密な名前が指定) されます。次に、Al.exe は最終的なアセンブリに秘密キーで署名します。 Sn.exe を使用して、キー ペアを生成します。 キー情報は、アセンブリの .publickey フィールドに表示されます。 空白が埋め込まれている場合は、text を二重引用符 (" ") で囲みます。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyKeyNameAttribute) として指定することもできます。 |
/main:method |
モジュールを実行可能ファイルに変換するときに、エントリ ポイントとして使用するメソッドの完全修飾名 (class.method) を指定します。 |
/nologo |
Al.exe の起動時に、著作権情報またはロゴをコマンド ラインに表示しないようにします。 |
/out:filename |
Al.exe によって生成されるファイルの名前を指定します。これは必須オプションです。 |
/platform:text |
コードを実行できるプラットフォーム (x86、Itanium、x64、または既定値の anycpu) のいずれかを制限します。 |
/prod[uct]:text |
アセンブリの Product フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/product が Win32 Product Name リソースとして Windows エクスプローラに表示されます。 テキストが空の文字列の場合、Win32 Product Name リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /product は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyProductAttribute) として指定することもできます。 |
/productv[ersion]:text |
アセンブリの Product Version フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/productversion が Win32 Product Version リソースとして使用されます。/productversion を指定しないと、Win32 File Version リソースによって Win32 Product Version リソースが設定されます。 /win32res を指定した場合は、Win32 リソース情報に対して /productversion は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyInformationalVersionAttribute) として指定することもできます。 |
/t[arget]:lib[rary] | exe | win[exe] |
出力ファイルのファイル形式として、lib[rary] (コード ライブラリ)、exe (コンソール アプリケーション)、または win[exe] (Windows ベースのアプリケーション) のいずれかを指定します。既定値は lib[rary] です。 |
/template:filename |
カルチャ フィールドを除く、すべてのアセンブリ メタデータの継承元であるアセンブリ (filename) を指定します。 /template を指定して作成したアセンブリは、サテライト アセンブリになります。 |
/title:text |
アセンブリの Title フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/title が Win32 Description リソースとして Windows エクスプローラに表示され、アプリケーションのフレンドリ名としてシェルによって使用されます。この文字列は、複数のアプリケーションでサポートされる種類のファイルに対するショートカット メニューの [ファイルを開くアプリケーションの選択] サブメニューにも表示されます。 テキストが空の文字列の場合、Win32 Description リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /title は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyTitleAttribute) として指定することもできます。 |
/trade[mark]:text |
アセンブリの Trademark フィールドに文字列を指定します。text に空白が含まれている場合は、文字列を二重引用符 (" ") で囲みます。この文字列はアセンブリのカスタム属性であり、リフレクションを使用して表示するために使用できます。 /win32res を指定しないと、/trademark が Win32 Trademark リソースとして Windows エクスプローラに表示されます。 テキストが空の文字列の場合、Win32 Trademark リソースは単一の空白として表示されます。 /win32res を指定した場合は、Win32 リソース情報に対して /trademark は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyTrademarkAttribute) として指定することもできます。 |
/v[ersion]:version |
アセンブリのバージョン情報を指定します。バージョン文字列の形式は major.minor.build.revision です。既定値は 0 です。 /version を指定する場合、major も指定する必要があります。major と minor を指定する場合、build に対してアスタリスク (*) を指定できます。その場合は、build が現地時間 2000 年 1 月 1 日以降の経過日数と等しい値になり、revision が現地時間 2000 年 1 月 1 日午前 0 時以降の経過秒数を 2 で割った値と等しくなります。 major、minor、および build を指定する場合、revision に対してアスタリスクを指定できます。その場合は、revision が現地時間 2000 年 1 月 1 日午前 0 時以降の経過秒数を 2 で割った値と等しくなります。 まとめると、有効なバージョン文字列は次のようになります。 X X.X X.X.* X.X.X X.X.X.* X.X.X.X X は 65535 を除く unsigned short 定数 (0 ~ 65534) です。 /win32res を指定しないと、/version が Win32 Assembly Version リソースとして使用されます。 /win32res、/productversion、および /fileversion を指定しない場合、/version が Assembly Version、File Version、および Product Version Win32 リソースに対して使用されます。 /win32res を指定した場合は、Win32 リソース情報に対して /version は無効になります。 このオプションは、任意の MSIL モジュールのソース コードでカスタム属性 (AssemblyVersionAttribute) として指定することもできます。 |
/win32icon:filename |
.ico ファイルをアセンブリに挿入します。この .ico ファイルは、Windows エクスプローラにおける出力ファイルの視覚的な表現を提供します。 |
/win32res:filename |
Win32 リソース (.res ファイル) を出力ファイルに挿入します。Win32 リソース ファイルは、リソース コンパイラを使用して作成できます。リソース コンパイラは、Visual C++ プログラムをコンパイルするときに呼び出されます。.res ファイルは .rc ファイルから作成されます。 |
@filename |
Al.exe コマンドが格納されている応答ファイルを指定します。 応答ファイルでは、コマンドは各行に 1 つずつ指定されるか、複数のコマンドが 1 行に空白で区切られて指定されます。 |
/? |
このツールのコマンド構文とオプションを表示します。 |
解説
すべての Visual Studio コンパイラは、アセンブリを生成します。ただし、モジュール (マニフェストを含まないメタデータ) が 1 つ以上ある場合は、Al.exe を使用して、マニフェストを別個のファイルに含むアセンブリを作成できます。
アセンブリのキャッシュへのインストール、キャッシュからの削除、およびキャッシュの内容の一覧表示を実行するには、グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用します。
使用例
t2.netmodule モジュールからアセンブリを含む実行可能ファイル t2a.exe を作成するコマンドを次に示します。エントリ ポイントは、MyClass 内の Main メソッドです。
al t2.netmodule /target:exe /out:t2a.exe /main:MyClass.Main
参照
参照
グローバル アセンブリ キャッシュ ツール (Gacutil.exe)