web-dev-qa-db-fra.com

Comment puis-je voir le nom fort de mon assemblage?

J'ai un projet et j'ai créé un fichier de clé de nom fort pour celui-ci.

Comment savoir quel est le nom fort de mon Assemblée? Il semble que cela devrait être évident, mais je ne trouve aucune référence à cela.

28
Jeremy Holovacs

Vous pouvez obtenir le nom complet en utilisant un outil comme Reflector ou ILSpy. Sélectionnez l'assemblage et il devrait être en haut. Pour XNA dans 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

Si vous ne souhaitez pas utiliser ces outils, vous pouvez déterminer le nom complet à l'aide de l'Explorateur Windows et de l'invite de commandes Visual Studio.

Tout d'abord, faites un clic droit sur l'assemblage DLL -> Propriétés -> Détails. Ici vous pouvez trouver le nom, la version et la culture de votre assemblage.

Pour la clé publique, lancez l'invite de commandes Visual Studio et écrivez:

sn -Tp YourAssembly.dll

Il vous donnera la clé publique.

Vous pouvez maintenant forger un nom complet.

21
Patedam

Vous pouvez utiliser l'outil Strong Name pour déterminer si l'assembly porte un nom fort. Dans l'invite de commande, vous pouvez le faire pour vérifier qu'il s'agit d'un assembly nommé fort.

sn -v "C:\MyAssemblyPath"

et pour obtenir le jeton public, vous pouvez le faire

sn -T "C:\MyAssemblyPath"

Vous pouvez également utiliser Reflector ou ILSpy pour trouver le jeton de clé publique.

Si vous souhaitez obtenir le nom complet de l'assembly, y compris le jeton public, vous pouvez utiliser Assembly.FullName .

Assembly.GetExecutingAssembly().FullName;
22
keyboardP
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);

Si vous connaissez le nom de fichier, vous pouvez traiter les en-têtes PE pour trouver la signature de nom fort . }

3
Jeremy Thompson