[C#] Dll의 PublicKeyToken 찾기

2022. 12. 19. 19:41이것저것

728x90

https://stackoverflow.com/questions/1710935/how-do-i-find-the-publickeytoken-for-a-particular-dll

 

How do I find the PublicKeyToken for a particular dll?

I need to recreate a provider in my web.config file that looks something like this: <membership defaultProvider="AspNetSqlMemProvider"> <providers> <clear/> <add

stackoverflow.com

 

 

저는 아래 처럼 내  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>
 

하지만, 재 생성한 이 어셈블리가 런타임 오류를 생성 하는 데요, 제 생각에는 이 문제는 잘 못된 #PublicKeyToken 때문이 아닌가 생각 됩니다.

그럼, 내 어셈블리에 대한 PublicKeyToken 을 어떻게 찾을 수 있을까요?

아니면, 내가 방향을 잘 못 잡은 걸까요?

 

채택 답변)

다음 파워쉘 문법으로 어셈블리 정보를 찾을 수 있습니다:

([system.reflection.assembly]::loadfile("C:\..\Full_Path\..\MyDLL.dll")).FullName
 

결과는 아래 처럼, Version, Culture 그리고 PublicKeyToken 순으로 나오게 됩니다.

MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
 

좀 눈에 띄는 답변)

테스트 해 보지는 않았습니다.

CRice 말마따나, 아래 메서드를 이용 해서 의존 어셈블리의 publicKeyToken과 함께 정보 리스트를 얻을 수 있을 겁니다.

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"); 
 
 
 

이상.

 

728x90

'이것저것' 카테고리의 다른 글

[C#] PublicKeyToken=null - DLL 서명하기  (0) 2022.12.22
[C#] System.NullReferenceException  (0) 2022.12.20
IIS Timeout 확인하기  (0) 2022.12.03
Wireshark에서 IP로 필터링하는 방법  (0) 2022.12.02
IIS 설정-사이트 바인딩  (0) 2022.11.22