Postupy: Vytváření zásad vydavatele
Poznámka:
Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.
Dodavatelé sestavení mohou uvést, že aplikace by měly používat novější verzi sestavení zahrnutím souboru zásad vydavatele s upgradovaným sestavením. Soubor zásad vydavatele určuje přesměrování sestavení a základní nastavení kódu a používá stejný formát jako konfigurační soubor aplikace. Soubor zásad vydavatele je zkompilován do sestavení a umístěn v globální mezipaměti sestavení.
Vytváření zásad vydavatele zahrnuje tři kroky:
Vytvořte soubor zásad vydavatele.
Vytvořte sestavení zásad vydavatele.
Přidejte sestavení zásad vydavatele do globální mezipaměti sestavení.
Schéma zásad vydavatele je popsáno v části Přesměrování verzí sestavení. Následující příklad ukazuje soubor zásad vydavatele, který přesměruje jednu verzi myAssembly
na jinou.
<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>
Informace o určení základu kódu najdete v tématu Určení umístění sestavení.
Vytvoření sestavení zásad vydavatele
Pomocí linkeru sestavení (Al.exe) vytvořte sestavení zásad vydavatele.
Vytvoření sestavení zásad vydavatele
Na příkazovém řádku zadejte následující příkaz:
al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture
V tomto příkazu:
Argument
publisherPolicyFile
je název souboru zásad vydavatele.Argument
publisherPolicyAssemblyFile
je název sestavení zásad vydavatele, které je výsledkem tohoto příkazu. Název souboru sestavení musí odpovídat formátu:"policy.majorNumber.minorNumber.mainAssemblyName.dll"
Argumentem
keyPairFile
je název souboru obsahujícího pár klíčů. Sestavení a sestavení zásad vydavatele musíte podepsat pomocí stejné dvojice klíčů.Argument
processorArchitecture
identifikuje platformu, na kterou cílí sestavení specifické pro procesor.Poznámka:
Schopnost cílit na konkrétní architekturu procesoru je dostupná od rozhraní .NET Framework 2.0.
Schopnost cílit na konkrétní architekturu procesoru je dostupná od rozhraní .NET Framework 2.0. Následující příkaz vytvoří sestavení zásad vydavatele volané policy.1.0.myAssembly
ze souboru zásad vydavatele s názvem pub.config
, přiřadí sestavení silný název sestavení pomocí páru klíčů v sgKey.snk
souboru a určuje, že sestavení cílí na architekturu procesoru x86.
al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86
Sestavení zásad vydavatele musí odpovídat architektuře procesoru sestavení, na které se vztahuje. Pokud tedy sestavení má ProcessorArchitecture hodnotu MSIL, sestavení zásad vydavatele pro toto sestavení musí být vytvořeno s /platform:anycpu
. Pro každé sestavení specifické pro procesor je nutné zadat samostatné sestavení zásad vydavatele.
Důsledkem tohoto pravidla je, že pokud chcete změnit architekturu procesoru pro sestavení, musíte změnit hlavní nebo podverzi čísla verze, abyste mohli zadat nové sestavení zásad vydavatele se správnou architekturou procesoru. Sestavení starých zásad vydavatele nemůže sestavení obsluhovat, jakmile má sestavení jinou architekturu procesoru.
Dalším důsledkem je, že linker verze 2.0 nelze použít k vytvoření sestavení zásad vydavatele pro sestavení kompilované pomocí starších verzí rozhraní .NET Framework, protože vždy určuje architekturu procesoru.
Přidání sestavení zásad vydavatele do globální mezipaměti sestavení
Pomocí nástroje Globální mezipaměť sestavení (Gacutil.exe) přidejte sestavení zásad vydavatele do globální mezipaměti sestavení.
Přidání sestavení zásad vydavatele do globální mezipaměti sestavení
Na příkazovém řádku zadejte následující příkaz:
gacutil /i publisherPolicyAssemblyFile
Následující příkaz přidá policy.1.0.myAssembly.dll
do globální mezipaměti sestavení.
gacutil /i policy.1.0.myAssembly.dll
Důležité
Sestavení zásad vydavatele nelze přidat do globální mezipaměti sestavení, pokud původní soubor zásad vydavatele zadaný v argumentu /link
není umístěn ve stejném adresáři jako sestavení.