Dela via


Gör så här: Skapa en utgivarprincip

Kommentar

Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.

Leverantörer av sammansättningar kan ange att program ska använda en nyare version av en sammansättning genom att inkludera en utgivarprincipfil med den uppgraderade sammansättningen. Utgivarprincipfilen anger inställningar för sammansättningsomdirigering och kodbas och använder samma format som en programkonfigurationsfil. Utgivarprincipfilen kompileras till en sammansättning och placeras i den globala sammansättningscacheminnet.

Det finns tre steg som ingår i skapandet av en utgivarprincip:

  1. Skapa en utgivarprincipfil.

  2. Skapa en sammansättning för utgivarprinciper.

  3. Lägg till utgivarprincipsammansättningen i den globala sammansättningscacheminnet.

Schemat för utgivarprincipen beskrivs i Omdirigering av sammansättningsversioner. I följande exempel visas en utgivarprincipfil som omdirigerar en version av myAssembly till en annan.

<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>

Information om hur du anger en kodbas finns i Ange en sammansättnings plats.

Skapa publisher-principsammansättningen

Använd Assembly Linker (Al.exe) för att skapa utgivarens principsammansättning.

Så här skapar du en principsammansättning för utgivare

Skriv följande kommando i kommandotolken:

al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture

I det här kommandot:

  • Argumentet publisherPolicyFile är namnet på utgivarprincipfilen.

  • Argumentet publisherPolicyAssemblyFile är namnet på utgivarprincipsammansättningen som är resultatet av det här kommandot. Sammansättningsfilens namn måste följa formatet:

    "policy.majorNumber.minorNumber.mainAssemblyName.dll"

  • Argumentet keyPairFile är namnet på filen som innehåller nyckelparet. Du måste signera sammansättnings- och utgivarprincipsammansättningen med samma nyckelpar.

  • Argumentet processorArchitecture identifierar den plattform som en processorspecifik sammansättning riktar sig mot.

    Kommentar

    Möjligheten att rikta in sig på en specifik processorarkitektur är tillgänglig från och med .NET Framework 2.0.

Möjligheten att rikta in sig på en specifik processorarkitektur är tillgänglig från och med .NET Framework 2.0. Följande kommando skapar en utgivarprincipsammansättning som anropas policy.1.0.myAssembly från en utgivarprincipfil med namnet pub.config, tilldelar sammansättningen ett starkt namn med nyckelparet sgKey.snk i filen och anger att sammansättningen riktar sig mot x86-processorarkitekturen.

al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86

Utgivarens principsammansättning måste matcha processorarkitekturen för den sammansättning som den gäller för. Om sammansättningen har värdet ProcessorArchitectureMSILmåste därför utgivarprincipsammansättningen för den sammansättningen skapas med /platform:anycpu. Du måste ange en separat utgivarprincipsammansättning för varje processorspecifik sammansättning.

En följd av den här regeln är att om du vill ändra processorarkitekturen för en sammansättning måste du ändra huvudkomponenten eller delkomponenten i versionsnumret så att du kan ange en ny principuppsättning för utgivare med rätt processorarkitektur. Den gamla utgivarprincipsammansättningen kan inte betjäna sammansättningen när sammansättningen har en annan processorarkitektur.

En annan konsekvens är att version 2.0-länkaren inte kan användas för att skapa en utgivares principsammansättning för en sammansättning som kompilerats med hjälp av tidigare versioner av .NET Framework, eftersom den alltid anger processorarkitektur.

Lägga till publisher-principsammansättningen i den globala sammansättningscachen

Använd verktyget Global Assembly Cache (Gacutil.exe) för att lägga till utgivarens principsammansättning i den globala sammansättningscacheminnet.

Så här lägger du till sammansättningen för utgivarprinciper i den globala sammansättningscachen

Skriv följande kommando i kommandotolken:

gacutil /i publisherPolicyAssemblyFile

Följande kommando lägger policy.1.0.myAssembly.dll till i den globala sammansättningscacheminnet.

gacutil /i policy.1.0.myAssembly.dll

Viktigt!

Det går inte att lägga till sammansättningen för utgivarprincipen i den globala sammansättningscachen om inte den ursprungliga utgivarprincipfilen som anges i /link argumentet finns i samma katalog som sammansättningen.

Se även