HOW TO:建立發行者原則
組件製造商可以藉著將發行者原則檔和升級的組件包含在一起,來聲明應用程式應該使用組件的較新版本。 發行者原則檔會指定組件重新導向和程式碼基底 (Code Base) 設定,並使用和應用程式組態檔相同的格式。 發行者原則檔會編譯到組件中,並且放在全域組件快取中。
建立發行者原則包括三個步驟:
建立發行者原則檔。
建立發行者原則組件。
將發行者原則組件加入至全域組件快取中。
發行者原則的結構描述是在重新導向組件版本中描述。 下列範例說明將 myAssembly 的一個版本重新導向另一個版本的發行者原則檔。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Redirecting to version 2.0.0.0 of the assembly. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
若要暸解如何指定程式碼基底,請參閱指定組件的位置。
建立發行者原則組件
請使用組件連結器 (Al.exe) 來建立發行者原則組件。
若要建立發行者原則組件
在命令提示字元中輸入下列命令:
al /link: publisherPolicyFile /out: publisherPolicyAssemblyFile /keyfile: keyPairFile /platform: processorArchitecture
在這個命令中:
publisherPolicyFile 引數是指發行者原則檔的名稱。
publisherPolicyAssemblyFile 引數是指由這個命令所產生的發行者原則組件名稱。 組件的檔名必須遵循下列格式:
policy.majorNumber.minorNumber.mainAssemblyName.dll
keyPairFile 引數是指包含金鑰組 (Key Pair) 的檔案名稱。 您必須用相同的金鑰組簽署組件和發行者原則組件。
processorArchitecture 引數會識別特定處理器組件的目標平台, 這個引數可以是 amd64、ia64、msil 或 x86。
注意事項 將特定處理器架構設定為目標的功能是 .NET Framework 2.0 版的新增功能。
下列命令會從發行者原則檔 pub.config 建立命名為 policy.1.0.myAssembly 的發行者原則組件、使用 sgKey.snk 檔中的金鑰組 (Key Pair),為此組件指派強式名稱 (Strong Name),以及將此組件的目標指定為 x86 處理器架構。
al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
發行者原則組件必須符合它所適用之組件的處理器架構; 因此,如果您的組件具有 MSIL 的 ProcessorArchitecture 值,則必須以 /platform:anycpu 建立該組件的發行者原則組件。 您必須針對每個處理器特有組件提供個別的發行者原則組件。
這個規則的結果如下:為了變更組件的處理器架構,您必須變更主要版本號碼和次要版本號碼,以便能夠為新的發行者原則組件提供正確的處理器架構。 一旦您的組件使用不同的處理器架構時,舊的發行者原則組件便無法為您的組件提供服務。
另一種結果是 2.0 版連結器 (Linker) 無法用來針對使用舊版 .NET Framework 所編譯的組件建立發行者原則組件,因為該組件一定會指定處理器架構。
將發行者原則組件加入至全域組件快取中
請使用全域組件快取工具 (Gacutil.exe) 將發行者原則組件加入至全域組件快取中。
若要將發行者原則組件加入至全域組件快取中
在命令提示字元中輸入下列命令:
gacutil /i publisherPolicyAssemblyFile
下列命令會將 policy.1.0.myAssembly.dll 加入至全域組件快取中。
gacutil /i policy.1.0.myAssembly.dll
重要事項 除非原始的發行者原則檔與發行者原則組件位於相同目錄,否則無法將這個組件加入至全域組件快取中。