728x90
https://stackoverflow.com/questions/1710935/how-do-i-find-the-publickeytoken-for-a-particular-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>
하지만, 재 생성한 이 어셈블리가 런타임 오류를 생성 하는 데요, 제 생각에는 이 문제는 잘 못된 #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 |