Как найти 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 для моей сборки?



кроме того, я совершенно неправильно с этим?

1583   9  

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

    Ничего не найдено.