공용 키를 찾는 방법특정 dll에 대한 토큰?
web.config 파일에서 다음과 같은 공급자를 다시 만들어야 합니다.
<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>
그러나 이 어셈블리를 로드할 수 없다는 런타임 오류가 발생하며, 잘못된 PublicKey를 가지고 있기 때문인 것 같습니다.토큰. 공용 키를 조회하려면 어떻게 해야 합니까?내 집회를 위한 토큰?
아니면, 제가 완전히 잘못된 방향으로 가고 있는 것일까요?
PowerShell을 사용하여 다음 명령을 실행할 수 있습니다.
([system.reflection.assembly]::loadfile("C:\..\Full_Path\..\MyDLL.dll")).FullName
출력은 버전, 문화 및 공개 키를 제공합니다.아래 표시된 토큰:
MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
sn -T YourAssembly.dll
또는 Reflector에서 어셈블리를 로드합니다.
프로젝트에 DLL을 추가한 경우 csproj 파일을 열고 참조 태그를 볼 수 있습니다.
예:
<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
sn -T <assembly>
Visual Studio 명령줄에 있습니다.어셈블리가 글로벌 어셈블리 캐시에 설치된 경우 다음으로 이동하는 것이 더 쉽습니다.C:\Windows\assembly
GAC 어셈블리 목록에서 찾을 수 있습니다.
구체적인 경우에는 전체 이름 유형과 어셈블리 참조를 혼합할 수 있습니다. MSDN을 확인해 보는 것이 좋습니다.
.NET Framework 툴을 사용하면 매우 간단합니다.sn.exe
Visual Studio 2008 명령 프롬프트를 열고 공용 키를 가져올 dll 폴더를 가리킵니다.
다음 명령을 사용합니다.
sn –TmyDLL.dll
공개 키 토큰이 제공됩니다.어셈블리에 강력한 서명을 해야 하는 경우에만 작동하는 한 가지 사항을 기억하십시오.
예
C:\WINNT\Microsoft.NET\프레임워크\v3.sn -T EdmGen.exe Microsoft (R) .NET Framework 강력한 이름 유틸리티 버전 3.5.21022.8저작권 (c) Microsoft Corporation.무단 전재 금지. 공개 키 토큰은 b77a5c561934e089입니다.
Windows 탐색기를 사용하는 경우 C:로 이동합니다.\Windows\assembly, 필요한 파일을 찾습니다.속성에서 공용 키를 복사할 수 있습니다.상품권.
이는 설치 중인 Visual Studio나 다른 유틸리티에 의존하지 않습니다.
정보를 추가하기만 하면, 언급된 위치에서 sn.exe 유틸리티를 찾을 수 없습니다. 제 경우에는 C:\Program Files(x86)\Microsoft SDKs\Windows\v7.0에 있습니다.A\bin
어셈블리.파일 로드(@"C:\Windows\Microsoft).NET\Framework\v4.0.30319\system.data.dll").전체 이름
결과적으로 발생합니다.
System.Data, Version=4.0.0.0, Culture=neutral, PublicKey토큰=b77a5c561934e089
@CRICE가 말했듯이 아래 방법을 사용하여 publicKey가 있는 종속 어셈블리 목록을 가져올 수 있습니다.상품권
public static int DependencyInfo(string args)
{
Console.WriteLine(Assembly.LoadFile(args).FullName);
Console.WriteLine(Assembly.LoadFile(args).GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false).SingleOrDefault());
try {
var assemblies = Assembly.LoadFile(args).GetReferencedAssemblies();
if (assemblies.GetLength(0) > 0)
{
foreach (var assembly in assemblies)
{
Console.WriteLine(" - " + assembly.FullName + ", ProcessorArchitecture=" + assembly.ProcessorArchitecture);
}
return 0;
}
}
catch(Exception e) {
Console.WriteLine("An exception occurred: {0}", e.Message);
return 1;
}
finally{}
return 1;
}
나는 일반적으로 그것을 LinqPad 스크립트로 사용합니다.
DependencyInfo("@c:\MyAssembly.dll");
에서.
만약 당신이 누겟에 게시된 어떤 것에 대한 토큰을 원한다면,
예를 들어, OxyPlot입니다.Wpf:
https://nuget.info/packages/OxyPlot.Wpf/2.1.0
DLL 및 세부 정보를 검색합니다.
다른 패키지의 URL에서 nuget pkg 이름과 버전을 변경하기만 하면 됩니다.
철하다, 철하다, 철하다 등dll-assemblyinfo
의 신의에$PATH
:
#!/bin/sh
f=$(readlink -f "$1")
{
echo "using System.Reflection;"
echo "Assembly.LoadFile(\"$f\");"
} | csharp
chmod +x 그러면
$ dll-assemblyinfo packages/System.Buffers.4.5.1/lib/netstandard2.0/System.Buffers.dll
System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
다음과 같은 방법으로 확인할 수도 있습니다.
실행으로 이동 : 공용 키가 필요한 DLL의 경로를 입력합니다.두 개의 파일을 찾을 수 있습니다: 1. __AssemblyInfo_.ini 2. DLL 파일
이 __어셈블리 열기메모장의 Info_.ini 파일에서 공개 키 토큰을 볼 수 있습니다.
MSVC 등에 의해 생성된 DLL의 경우
publicKeypktexttract를 위해 pktexttract를 사용하는 는 '.cer'에서 을 .
https://learn.microsoft.com/en-us/windows/win32/sbscs/://learn.microsoft.com/en-us/windows/win32/sbscs/pktextract-exe
다른 답변에서 자세한 내용을 확인하십시오. https://stackoverflow.com/a/72190473/12529885
언급URL : https://stackoverflow.com/questions/1710935/how-do-i-find-the-publickeytoken-for-a-particular-dll
'programing' 카테고리의 다른 글
선의 개별 점에 대한 마커 설정 (0) | 2023.06.04 |
---|---|
Visual Studio에서 NuGet 패키지 복원을 사용하려면 어떻게 해야 합니까? (0) | 2023.06.04 |
인터넷 연결이 오프라인 상태인지 탐지하시겠습니까? (0) | 2023.05.25 |
MongoDB: 지난 24시간 동안 작성된 문서만 가져오시겠습니까? (0) | 2023.05.25 |
"이 작업을 수행하는 동안 오류가 발생했습니다." (0) | 2023.05.25 |