共用方式為


組件名稱

元件的名稱會儲存在元數據中,而且會對應用程式之元件的範圍和使用產生重大影響。 強名稱元件具有完整的限定名稱,其中包含元件的名稱、文化特性、公鑰、版本號碼,以及可選的處理器架構。 使用FullName屬性來取得載入元件的完整限定名稱,通常稱為顯示名稱。

運行時間會使用名稱資訊來找出元件,並將它與其他具有相同名稱的元件區隔開。 例如,名為 myTypes 的強名稱元件可能會有下列完整名稱:

myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil

在此範例中,完全限定名稱表示 myTypes 組件具有公鑰標記的強名稱、屬於美國英文的文化特性,且版本號碼為 1.0.1234.0。 其處理器架構為 msil,這表示它會根據作系統和處理器,以 Just-In-Time (JIT)編譯成 32 位程序代碼或 64 位程式代碼。

小提示

此資訊 ProcessorArchitecture 允許處理器特定的程序集版本。 您可以建立其身份僅因處理器架構而不同的元件版本,例如 32 位和 64 位特定於處理器的版本。 強名稱不需要特定的處理器架構。 如需詳細資訊,請參閱AssemblyName.ProcessorArchitecture

要求元件中類型的程式碼必須使用完整限定的元件名稱。 這稱為完全限定綁定。 參考 .NET Framework 中的元件時,不允許只指定元件名稱的部分系結。

組成 .NET Framework 之元件的所有元件參考也必須包含元件的完整名稱。 例如:對於 1.0 版的 System.Data .NET Framework 程式集的參考會包括:

System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

版本對應至隨附於 .NET Framework 1.0 版的所有 .NET Framework 元件版本號碼。 針對 .NET Framework 元件,文化特性值一律為中性,且公鑰與上述範例所示相同。

例如,若要在設定檔中新增組件引用來設定追蹤接聽器,您會包含系統 .NET Framework 組件的完整結構名稱:

<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />

備註

當系結至元件時,運行時間會將元件名稱視為不區分大小寫,但會保留元件名稱中使用的任何大小寫。 Windows SDK 中的數個工具在處理元件名稱時會區分大小寫。 為了獲得最佳效果,請像處理區分大小寫一樣管理組件名稱。

命名應用程式元件

判斷元件的身分識別時,運行時間不會考慮檔名。 元件識別由元件名稱、版本、文化特性和強名稱所組成,必須在執行時期清楚明確。

例如,如果您有稱為 myAssembly.exe 的元件參考名為 myAssembly.dll的元件,則當您執行 myAssembly.exe時,就會正確執行系結。 不過,如果另一個應用程式使用此方法執行myAssembly.exe,執行階段會在AppDomain.ExecuteAssembly要求系結至myAssembly時判斷是否已載入。 在此情況下,永遠不會載入 myAssembly.dll 。 因為 myAssembly.exe 不包含要求的型別,會發生TypeLoadException

若要避免這個問題,請確定組成應用程式的元件沒有相同的元件名稱,或將具有相同名稱的元件放在不同的目錄中。

備註

在 .NET Framework 中,如果您在全域程式集緩存中放置強名稱元件,則元件的檔名必須符合元件名稱,不包括擴展名,例如 .exe.dll。 例如,如果元件的檔案名 是myAssembly.dll,則元件名稱必須是 myAssembly。 只有在根應用程式目錄中部署的私人元件可以有不同於檔名的元件名稱。

另請參閱