Как найти PublicKeyToken для конкретной dll?
Мне нужно воссоздать поставщика в моей сети.конфигурационный файл, который выглядит примерно так:
<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>
тем не менее, я получаю ошибку времени выполнения, говоря, что эта сборка не может быть загружена, и я думаю, что это потому, что у меня неправильный PublicKeyToken. Как мне найти PublicKeyToken для моей сборки?
кроме того, я совершенно неправильно с этим?
9 ответов:
используя PowerShell, вы можете выполнить эту инструкцию:
([system.reflection.assembly]::loadfile("c:\MyDLL.dll")).FullNameвыход обеспечит версия,культура и PublicKeyToken как показано ниже:
MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
С помощью sn.exe утилиты:
sn -T YourAssembly.dllили загрузка сборки в отражатель.
sn -T <assembly>в командной строке Visual Studio. Если сборка установлена в глобальном кэше сборок, проще перейти кC:\Windows\assemblyи найти его в списке сборок GAC.в вашем конкретном случае вы можете смешивать полное имя типа со ссылкой на сборку, вы можете взглянуть на MSDN.
Если вы добавили DLL в свой проект, вы можете открыть файл csproj и посмотреть ссылочный тег.
пример:
<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
ответ очень прост использовать инструменты .NET Framework
sn.exe. Поэтому откройте Командную строку Visual Studio 2008, а затем укажите папку dll, в которой вы хотите получить открытый ключ,используйте следующую команду
sn –T myDLL.dllЭто даст вам открытый ключ. Помните, что это работает только в том случае, если сборка должна быть строго подписана.
пример
C:\WINNT\Microsoft.NET\Framework\v3.5>sn -T EdmGen.exe Microsoft (R) .NET Framework Strong Name Utility Version 3.5.21022.8 Copyright (c) Microsoft Corporation. All rights reserved. Public key token is b77a5c561934e089
Я использую Проводник Windows, перейдите к C:\Windows\assembly -найди то, что мне нужно. Из свойств можно скопировать PublicKeyToken.
Это не зависит от Visual Studio или каких-либо других установленных утилит.
просто добавив больше информации, я не смог найти sn.exe утилита в указанных местах, в моем случае это было в C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.0A\bin
Assembly.LoadFile(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\system.data.dll").FullName
в результате
вы также можете проверить следующим способом.
перейти к запуску: введите путь к DLL, для которого вам нужен открытый ключ. Вы найдете 2 файла : 1. __AssemblyInfo_.ini 2. DLL файл
Откройте это _ _ AssemblyInfo_.ini-файл в блокноте, здесь вы можете увидеть токен открытого ключа.
Comments