Al.exe (アセンブリ リンカー)

更新 : 2011 年 4 月

アセンブリ リンカーは、モジュールまたはリソース ファイルのいずれかである 1 つ以上のファイルから、アセンブリのマニフェストを含むファイルを生成します。 モジュールとは、アセンブリ マニフェストを含まない Microsoft Intermediate Language (MSIL) ファイルのことです。

メモメモ

Windows Vista コンピューターで仮想化されることを回避するには、アセンブリに、要求実行レベルを指定した win32 マニフェストが含まれる必要があります。コマンド ラインから al.exe を直接使用するときには、win32 リソース ファイルにマニフェストを埋め込むことができます。または、ビルド プロセスの後の段階で mt.exe を使用してマニフェストを追加することも可能です。Visual Studio 2008 では、C# と Visual Basic のどちらのコンパイラを使用しても、win32 マニフェストはアセンブリに自動的に埋め込まれます。詳細については、「/win32manifest (C# コンパイラ オプション)」を参照してください。

このツールは Visual Studio および Windows SDK と一緒に自動的にインストールされます。 このツールを実行するには、Visual Studio コマンド プロンプトまたは Windows SDK コマンド プロンプト (CMD シェル) を使用することをお勧めします。 これらのユーティリティを使用すると、インストール フォルダーに移動することなくツールを簡単に実行できます。 詳細については、「Visual Studio と Windows SDK のコマンド プロンプト」を参照してください。

  • コンピューターに Visual Studio がインストールされている場合は、タスク バーの [Start] ボタンをクリックし、[All Programs]、[Visual Studio]、[Visual Studio Tools]、[Visual Studio Command Prompt] の順にクリックします。

    または

    コンピューターに Windows SDK がインストールされている場合は、タスク バーの [Start] ボタンをクリックし、[All Programs]、Windows SDK のフォルダー、[Command Prompt] (または [CMD Shell]) の順にクリックします。

  • コマンド プロンプトに次のように入力します。

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」を参照してください。 それ以外のすべてのリソースに対しては、AssemblyGetManifestResource* メソッドを使用して、実行時にリソースにアクセスします。

リソース ファイルだけが Al.exe に渡された場合は、出力ファイルはサテライト リソース アセンブリになります。

/link[resource]:file[,name[,target[,private]]]

リソース ファイルをアセンブリにリンクします。 file によって指定されたリソースがアセンブリの一部になります。ファイルはコピーされません。 file パラメーターには、任意のファイル形式を指定できます。 たとえば、file パラメーターとしてネイティブ DLL を指定できます。 このようにすると、ネイティブ DLL はアセンブリの一部になるので、グローバル アセンブリ キャッシュにインストールして、アセンブリ内のマネージ コードからアクセスできます。 /linkresource コンパイラ オプションを使用して、これを実行することもできます。 詳細については、「/linkresource (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 に指定できる値は次のとおりです。

0x0000

アセンブリは side-by-side 実行をサポートしています。

0x0010

アセンブリは別のバージョンが同じアプリケーション ドメインで実行されている場合には実行できません。

0x0020

アセンブリは別のバージョンが同じプロセスで実行されている場合には実行できません。

0x0030

アセンブリは別のバージョンが同じコンピューターで実行されている場合には実行できません。

このオプションは、任意の 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 は現地時間の当日の午前 0 時以降の経過秒数を 2 で割った値と等しくなります。

major、minor、および build を指定する場合、revision に対してアスタリスクを指定できます。 その場合、revision は現地時間の当日の午前 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 を指定しない場合、/versionAssembly 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

参照

処理手順

方法: MSTest を使用してコマンド ラインから自動テストを実行する

参照

Al.exe ツールのエラーと警告

Sn.exe (厳密名ツール)

Gacutil.exe (グローバル アセンブリ キャッシュ ツール)

Visual Studio と Windows SDK のコマンド プロンプト

その他の技術情報

.NET Framework ツール

アセンブリを使用したプログラミング

履歴の変更

日付

履歴

理由

2011 年 4 月

Visual Studio と Windows SDK のコマンド プロンプトの使用に関する情報を追加。

情報の拡充