У меня есть проект, и я создал для него сильный ключевой файл.
Как я могу узнать, что такое сильное имя моей сборки? Кажется, это должно быть очевидно, но я не могу найти никакой ссылки на него.
У меня есть проект, и я создал для него сильный ключевой файл.
Как я могу узнать, что такое сильное имя моей сборки? Кажется, это должно быть очевидно, но я не могу найти никакой ссылки на него.
Вы можете получить полностью квалифицированное имя с помощью инструмента, такого как Reflector или ILSpy. Выберите сборку, и она должна быть в верхней части. Для XNA в 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
Если вы не хотите использовать эти инструменты, вы можете определить полное имя с помощью Windows Explorer и командной строки Visual Studio.
Сначала щелкните правой кнопкой мыши на сборке DLL → Свойства → Подробности. Здесь вы можете найти имя, версию и культуру своей сборки.
Для открытого ключа запустите команду Visual Studio Command и напишите:
sn -Tp YourAssembly.dll
Он предоставит вам открытый ключ.
Теперь вы можете подделать полностью квалифицированное имя.
Вы можете использовать инструмент Strong Name, чтобы определить, сильно ли присвоена сборка. В командной строке вы можете сделать это, чтобы убедиться, что это сильная именованная сборка.
sn -v "C:\MyAssemblyPath"
и чтобы получить общедоступный токен, вы можете сделать это
sn -T "C:\MyAssemblyPath"
Вы также можете использовать Reflector или ILSpy найти токен открытого ключа.
Если вы хотите получить полное имя сборки, включая общедоступный токен, вы можете использовать Assembly.FullName.
Assembly.GetExecutingAssembly().FullName;
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);
Если вы знаете имя файла, вы можете обработать заголовки PE, чтобы найти сильную подпись имени. }