組件連結器 (Al.exe)
組件連結器 (Assembly Linker) 會從一或多個模組或資源檔中產生一個包含組件資訊清單 (Assembly Manifest) 的檔案。模組是 Microsoft Intermediate Language (MSIL) 檔案,不含組件資訊清單。
al sources options
參數
您可以指定一或多個下列 sources。
來源 | 描述 |
---|---|
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 參數可以是任何檔案格式。例如,您可以指定原生的 DLL 做為 file 參數。這會產生組件的原生 DLL 部分,以便安裝到全域組件快取中,並從組件的 Managed 程式碼存取。您也可以利用 /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。如需其他的演算法,請參閱 Platform SDK 文件中的 ALG_ID。對於第一版的 .NET Framework 而言,只有 CALG_SHA1 和 CALG_MD5 為有效。 雜湊值 (Hash Value) 是儲存在組件資訊清單的檔案表格中。在安裝和載入期間,會根據雜湊來檢查組件中的檔案。 您也可以在任何模組的原始程式碼中,將這個選項指定為自訂屬性 (Attribute)(AssemblyAlgorithmIdAttribute)。 |
||
/base[address]:addr |
指定在執行期間將 DLL 載入使用者電腦上的位址。如果指定 DLL 的基底位址 (Base Address),而不是由作業系統重新找出處理空間中的 DLL,應用程式載入的速度會較快。 |
||
/bugreport:filename |
建立包含報告錯誤所需資訊的檔案 (filename)。 |
||
/comp[any]:text |
為組件中的 [公司] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,text 在 Microsoft Windows 檔案總管中會顯示為檔案的 Company 屬性。如果指定 /win32res,指定資源檔中的公司資訊在 Windows 檔案總管中會顯示為 Company 屬性。 如果文字為空字串 (""),Win32 Company 資源會顯示為一個空格。 如果指定 /win32res,/company 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyCompanyAttribute)。 |
||
/config[uration]:text |
為組件中的 [組態] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果文字為空字串,Win32 Configuration 資源會顯示為一個空格。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyConfigurationAttribute)。 |
||
/copy[right]:text |
為組件中的 [著作權] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,/copyright 在 Windows 檔案總管中會顯示為 Win32 Copyright 資源。 如果文字為空字串,Win32 Copyright 資源會顯示為一個空格。 如果指定 /win32res,/copyright 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyCopyrightAttribute)。 |
||
/c[ulture]:text |
指定與組件關聯的文化特性 (Culture) 字串。文化特性的有效值為在標題為<Tags for the Identification of Languages>的 Internet Requests for Comments (RFC) 1766 年文件中定義的值。 如果 text 包含空白,請將字串置於雙引號內 (" ")。沒有預設的文化特性字串。這個字串可使用反映進行檢視。 如需有效 text 字串的相關資訊,請參閱 CultureInfo。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyCultureAttribute)。 |
||
/delay[sign][+|-] |
指定組件為完整或部分簽署。如果要完整簽署的組件,請使用 /delaysign-。如果您只要將公開金鑰放入組件內,請使用 /delaysign+。 當您要求完整簽署的組件時,Al.exe 會雜湊包含資訊清單 (組件中繼資料) 的檔案,並使用私密金鑰簽署雜湊。產生的數位簽章儲存在包含資訊清單的檔案中。當組件延遲簽署時,Al.exe 不會計算和儲存簽署,只會在檔案中保留空間,以便稍後再加入簽署。 預設值為 /delaysign-。 /delaysign 選項必須與 /keyfile 或 /keyname 一起使用,否則不會發生任何作用。 例如,使用 /delaysign+ 可讓測試器將組件置於全域快取區中。測試過後,即可將私密金鑰放在組件內,以完整簽署組件。
您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyDelaySignAttribute)。 |
||
/descr[iption]:text |
為組件中的 Description 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,/description 在 Windows 檔案總管中會顯示為 Win32 Comments 資源。 如果文字為空字串,Win32 Comments 資源會顯示為一個空格。 如果指定 /win32res,/description 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (Description)。 |
||
/e[vidence]: file |
使用 Security.Evidence 的資源名稱,將 file 嵌入組件中。 您不能將 Security.Evidence 用於標準資源。 |
||
/fileversion: version |
為組件中的 [檔案版本] 欄位指定字串。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,會將 /fileversion 當成 Win32 File Version 資源。如果不指定 /fileversion,會以 Win32 Assembly Version 資源填入 (Populate) Win32 File Version 資源中。 如果指定 /win32res,/fileversion 對 Win32 資源沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyFileVersionAttribute)。 |
||
/flags: flags |
為組件中的 [旗標] 欄位指定值。flags 的可能值如下:
您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyFlagsAttribute)。 |
||
/fullpaths |
使 Al.exe 在錯誤訊息中所報告的任何檔案中使用絕對路徑。 |
||
/help |
顯示工具的命令語法和選項。 |
||
/keyf[ile]: filename |
指定含有金鑰組 (Key Pair) 的檔案 (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 |
指定將模組轉換成可執行檔時,用來做為進入點 (Entry Point) 的方法完整名稱 (class.method)。 |
||
/nologo |
隱藏叫用 Al.exe 時顯示在命令列的橫幅或標誌。 |
||
/out: filename |
指定 Al.exe 產生的檔案名稱。這是必要的選項。 |
||
/platform:text |
限制這個程式碼可以在哪些平台執行︰x86、Itanium、x64 或 anycpu (預設值)。 |
||
/prod[uct]: text |
為組件中的 [產品] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,/product 在 Windows 檔案總管中會顯示為 Win32 Product Name 資源。 如果文字為空字串,Win32 Product Name 資源會顯示為一個空格。 如果指定 /win32res,/product 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyProductAttribute)。 |
||
/productv[ersion]: text |
為組件中的 [產品版本] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,會將 /productversion 當成 Win32 Product Version 資源。如果不指定 /productversion,會以 Win32 Product Version 資源填入 Win32 File Version 資源中。 如果指定 /win32res,/productversion 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyInformationalVersionAttribute)。 |
||
/t[arget]:lib[rary] | exe | win[exe] |
指定輸出檔的檔案格式:lib[rary] (程式碼程式庫)、exe (主控台應用程式) 或 win[exe] (Windows 架構應用程式)。預設值為 lib[rary]。 |
||
/template: filename |
指定要從其中繼承所有組件中繼資料 (文化特性 (Culture) 欄位除外) 的組件 (filename)。 使用 /template 建立的組件將為附屬組件。 |
||
/title: text |
為組件中的 [標題] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,/title 在 Windows 檔案總管中會顯示為 Win32 Description 資源,Shell 會將它當成應用程式的易記名稱。對於有多個支援應用程式的檔案類型而言,也會顯示在快速鍵功能表的 [開啟方式] 子功能表中。 如果文字為空字串,Win32 Description 資源會顯示為一個空格。 如果指定 /win32res,/title 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyTitleAttribute)。 |
||
/trade[mark]: text |
為組件中的 [商標] 欄位指定字串。如果 text 包含空白,請將字串置於雙引號內 (" ")。這個字串是組件的自訂屬性,可使用反映進行檢視。 如果不指定 /win32res,/trademark 在 Windows 檔案總管中會顯示為 Win32 Trademark 資源。 如果文字為空字串,Win32 Trademark 資源會顯示為一個空格。 如果指定 /win32res,/trademark 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyTrademarkAttribute)。 |
||
/v[ersion]: version |
指定這個組件的版本資訊。字串的格式為 major.minor.build.revision。預設值為 0。 如果指定 /version,則必須同時指定 major。如果指定 major 和 minor,可以將 build 指定為星號 (*)。這會使 build 等於自 2000 年 1 月 1 日本地時間算起的天數,而 revision 則會等於自 2000 年 1 月 1 日本地時間午夜算起的秒數除以 2。 如果指定 major、minor 和 build,可以將 revision 指定為星號 (*)。這會使 revision 等於自 2000 年 1 月 1 日本地時間午夜算起的秒數除以 2。 若要摘要,有效的版本字串為: X X.X X.X.* X.X.X X.X.X.* X.X.X.X 此處的 X 是指任何不帶正負號的簡短常數 (Unsigned Short Constant),除 65535 之外 (0-65534)。 如果不指定 /win32res,會將 /version 當成 Win32 Assembly Version 資源。 如果不指定 /win32res、/productversion 和 /fileversion,就會使用 /version 做為 Assembly Version、File Version 和 Product Version Win32 資源。 如果指定 /win32res,/version 對 Win32 資源資訊將沒有任何影響。 您也可以在任何 MSIL 模組原始程式碼中指定這個選項當做自訂屬性 (AssemblyVersionAttribute)。 |
||
/win32icon: filename |
將 .ico 檔案插入組件中。.ico 檔案會為輸出檔案指定在 Windows 檔案總管中所需的外觀。 |
||
/win32res: filename |
將 Win32 資源 (.res 檔案) 插入輸出檔案中。Win32 資源檔可以用資源編譯器 (Resource Compiler) 建立。資源編譯器是在編譯 Visual C++ 程式時叫用的,而 .res 檔案則是用 .rc 檔案建立的。 |
||
@filename |
指定包含 Al.exe 命令的回應檔 (Response File)。 回應檔中的命令可顯示為一行一個,也可以全部顯示在同一行並以一或多個空格加以分隔。 |
||
/? |
顯示工具的命令語法和選項。 |
備註
所有 Visual Studio 編譯器都會產生組件。但是,如果您有一或多個模組 (不含資訊清單的中繼資料),可以使用 Al.exe 在別的檔案中建立包含資料清單的組件。
若要在快取中安裝組件、從快取中移除組件,或列出快取的內容,請使用全域組件快取工具 (Gacutil.exe)。
範例
下列命令會使用 t2.netmodule
模組中的組件建立可執行檔 t2a.exe
。進入點是 MyClass
中的 Main
方法。
al t2.netmodule /target:exe /out:t2a.exe /main:MyClass.Main
請參閱
參考
.NET Framework 工具
Al.exe 工具錯誤和警告
強式名稱工具 (Sn.exe)
全域組件快取工具 (Gacutil.exe)
SDK 命令提示字元