Ich muss in meiner Datei web.config einen Anbieter neu erstellen, der ungefähr so aussieht:
<membership defaultProvider="AspNetSqlMemProvider">
<providers>
<clear/>
<add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0"
name="AspNetSqlMemProvider"
type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"
/>
</providers>
</membership>
Ich erhalte jedoch einen Laufzeitfehler, der besagt, dass diese Assembly nicht geladen werden kann, und ich denke, das liegt daran, dass ich das falsche PublicKeyToken habe. Wie kann ich das PublicKeyToken für meine Assembly nachschlagen?
Oder gehe ich damit völlig falsch?
.net
dll
.net-assembly
publickeytoken
Matthew Jones
quelle
quelle
Antworten:
Mit PowerShell können Sie folgende Anweisung ausführen:
Die Ausgabe enthält die unten gezeigte Version , Kultur und PublicKeyToken :
quelle
Verwenden des Dienstprogramms sn.exe :
oder Laden der Baugruppe in Reflector .
quelle
Wenn Sie die DLL zu Ihrem Projekt hinzugefügt haben, können Sie die csproj-Datei öffnen und das Referenz-Tag anzeigen.
Beispiel:
quelle
sn -T <assembly>
in der Visual Studio-Befehlszeile. Wenn eine Assembly im globalen Assemblycache installiert ist, ist es einfacher,C:\Windows\assembly
sie in der Liste der GAC-Assemblys zu finden.In Ihrem speziellen Fall mischen Sie möglicherweise den vollständigen Namen des Typs mit der Baugruppenreferenz. Vielleicht möchten Sie sich MSDN ansehen .
quelle
Die Antwort ist sehr einfach. Verwenden Sie die .NET Framework-Tools
sn.exe
. Öffnen Sie also die Eingabeaufforderung von Visual Studio 2008 und zeigen Sie auf den Ordner der DLL, für den Sie den öffentlichen Schlüssel erhalten möchten.Verwenden Sie den folgenden Befehl:
Dadurch erhalten Sie das Token für den öffentlichen Schlüssel. Denken Sie daran, dass dies nur funktioniert, wenn die Baugruppe stark signiert sein muss.
Beispiel
quelle
Ich benutze den Windows Explorer, navigiere zu C: \ Windows \ Assembly und finde den, den ich brauche. Über die Eigenschaften können Sie das PublicKeyToken kopieren.
Dies hängt nicht davon ab, dass Visual Studio oder andere Dienstprogramme installiert werden.
quelle
Wenn ich nur weitere Informationen hinzufüge, konnte ich das Dienstprogramm sn.exe an den genannten Speicherorten nicht finden, in meinem Fall unter C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin
quelle
Wird darin enden, dass
quelle
Wie @CRice sagte, können Sie die folgende Methode verwenden, um eine Liste der abhängigen Assemblys mit publicKeyToken abzurufen
Ich benutze es im Allgemeinen als LinqPad- Skript, als das Sie es aufrufen können
DependencyInfo("@c:\MyAssembly.dll");
aus dem Codequelle
Sie können dies auch mit der folgenden Methode überprüfen.
Gehen Sie zu Ausführen: Geben Sie den Pfad der DLL ein, für die Sie einen öffentlichen Schlüssel benötigen. Sie finden 2 Dateien: 1. __AssemblyInfo_.ini 2. DLL-Datei
Öffnen Sie diese Datei __AssemblyInfo_.ini im Editor. Hier sehen Sie das Token für den öffentlichen Schlüssel.
quelle