Antwort

11

Sie können den voll qualifizierten Namen mit einem Werkzeug wie Reflector oder ILSpy erhalten. Wählen Sie die Baugruppe aus, und sie sollte oben liegen. Für XNA in ILSpy:

// C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.dll // Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553

Wenn Sie diese Tools nicht verwenden möchten, können Sie den vollständig qualifizierten Namen mit dem Windows Explorer und Visual Studio-Eingabeaufforderung herauszufinden.

Zuerst klicken Sie mit der rechten Maustaste auf die Assembly DLL -> Eigenschaften -> Details. Hier finden Sie den Namen, die Version und die Kultur Ihrer Versammlung.

für den öffentlichen Schlüssel, starten Aufforderung Visual Studio Befehl und schreiben:

sn -Tp YourAssembly.dll

Es wird Sie den öffentlichen Schlüssel geben.

Jetzt können Sie voll qualifizierten Namen fälschen.

2
Process[] processlist = Process.GetProcesses(); 

foreach(Process theprocess in processlist) 
{ 
    string strongName = "N/A"; 
    try 
    { 
     strongName = Assembly.ReflectionOnlyLoadFrom(theprocess.MainModule.FileName).FullName; 
    } 
    catch 
    { 
     // System process? 
    } 
    Console.WriteLine("Process: {0} ID: {1} Strong Name: {2}", theprocess.ProcessName, theprocess.Id, strongName); 

Wenn Sie den Dateinamen kennen, können Sie die PE headers to find the strong name signature verarbeiten. }

11

Sie können das Tool Strong Name verwenden, um festzustellen, ob die Assembly stark benannt ist. In der Eingabeaufforderung können Sie dies tun, um zu überprüfen, ob es sich um eine stark benannte Assembly handelt.

sn -v "C:\MyAssemblyPath" 

und die Öffentlichkeit Token zu erhalten, können Sie dies tun

sn -T "C:\MyAssemblyPath" 

Sie auch Reflector oder ILSpy zu finden, um den öffentlichen Schlüssel-Token verwenden können. Wenn Sie den vollständigen Namen der Baugruppe einschließlich des öffentlichen Tokens abrufen möchten, können Sie Assembly.FullName verwenden.

Assembly.GetExecutingAssembly().FullName; 
+1

Also ... keine Möglichkeit, dies aus Visual Studio zu tun, wenn die Projektquelle geladen ist, dann? –

+0

sn -t hat nicht für mich funktioniert .. Ich habe "Fehler beim Konvertieren von Schlüssel in Token - Ungültige Assembly öffentlichen Schlüssel." Paul Gillens Antwort hat funktioniert (-Tp), aber ich muss zugeben, dass ich frustriert bin, dass dies in VS nicht möglich ist. Es scheint albern, auf eine Befehlszeile für ein VISUAL-Studio-Tool zurückgreifen zu müssen. –

+0

Ja Entschuldigung, es sollte ein großes 'T' sein (aktualisierte Antwort). Es scheint seltsam, dass es in VS keine Möglichkeit gibt, es zu tun, aber Sie können 'sn.exe' zur Liste der externen Tools hinzufügen und das Argument auf' -T $ (TargetPath) 'setzen, so dass direkt von VS darauf zugegriffen werden kann . Ich habe es gerade ausprobiert und es scheint gut zu funktionieren und zeigt nun den öffentlichen Schlüssel des aktuellen Projekts an, wenn das Werkzeug aus dem 'Tools' Menü ausgewählt wird. – keyboardP

Verwandte Themen