Procedure: Verwijzen naar een sterk benoemde assembly
Het proces voor het verwijzen naar typen of resources in een sterk benoemde assembly is meestal transparant. U kunt de verwijzing maken op het moment van compileren (vroege binding) of tijdens runtime.
Er treedt een referentietijd op wanneer u aangeeft aan de compiler dat de assembly die moet worden gecompileerd expliciet verwijst naar een andere assembly. Wanneer u compileertijdverwijzing gebruikt, haalt de compiler automatisch de openbare sleutel op van de beoogde sterk benoemde assembly en plaatst deze in de assemblyverwijzing van de assembly die wordt gecompileerd.
Notitie
Een sterk benoemde assembly kan alleen typen van andere sterk benoemde assembly's gebruiken. Anders zou de beveiliging van de sterk benoemde assembly worden aangetast.
Een compilatietijdverwijzing maken naar een sterk benoemde assembly
Typ de volgende opdracht bij een opdrachtprompt:
<compileropdracht>/verwijzing:<assemblynaam>
In deze opdracht is de compileropdracht de compileropdracht voor de taal die u gebruikt, en de assemblynaam is de naam van de sterk benoemde assembly waarnaar wordt verwezen. U kunt ook andere compileropties gebruiken, zoals de optie /t:library voor het maken van een bibliotheekassembly.
In het volgende voorbeeld wordt een assembly met de naam myAssembly.dll gemaakt die verwijst naar een sterk benoemde assembly met de naam myLibAssembly.dll van een codemodule met de naam myAssembly.cs.
csc /t:library myAssembly.cs /reference:myLibAssembly.dll
Een runtimeverwijzing maken naar een sterk benoemde assembly
Wanneer u een runtimeverwijzing maakt naar een assembly met een sterke naam, bijvoorbeeld met behulp van de Assembly.Load of Assembly.GetType methode, moet u de weergavenaam van de sterk benoemde assembly gebruiken. De syntaxis van een weergavenaam is als volgt:
<assemblynaam,versienummer,cultuur,token>><<>< met openbare sleutel>
Voorbeeld:
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33
In dit voorbeeld PublicKeyToken
is de hexadecimale vorm van het openbare-sleuteltoken. Als er geen cultuurwaarde is, gebruikt u Culture=neutral
.
In het volgende codevoorbeeld ziet u hoe u deze informatie gebruikt met de Assembly.Load methode.
Assembly^ myDll =
Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly myDll =
Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Dim myDll As Assembly = _
Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")
U kunt de hexadecimale indeling van de openbare sleutel en het openbare-sleuteltoken voor een specifieke assembly afdrukken met behulp van de volgende opdracht Sterke naam (Sn.exe ):
sn -Tp < assembly >
Als u een openbare-sleutelbestand hebt, kunt u in plaats daarvan de volgende opdracht gebruiken (let op het verschil in het geval van de opdrachtregeloptie):
sn -tp < openbare sleutelbestand >