特定の DLL の PublicKeyToken を見つけるにはどうすればよいですか?
-
19-09-2019 - |
質問
次のようなプロバイダーを 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:\MyDLL.dll")).FullName
出力によって提供されるのは、 バージョン, 文化 そして パブリックキートークン 以下に示すように:
MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
他のヒント
、あなたが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 –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
私はCに移動し、Windowsエクスプローラを使用します。プロパティからは、なPublicKeyTokenをコピーすることができます。
このは、Visual Studioに依存していないか、または任意の他のユーティリティがインストールされます。
はちょうどより多くの情報を追加して、私が言及した場所でます。SN.exeユーティリティを見つけることができませんでした、私の場合にはそれがCにあった:\プログラムファイル(x86の)\マイクロソフトのSDK \ Windowsの\ v7.0A \ binに
Assembly.LoadFile(@ "C:\ WINDOWS \ Microsoft.NET Frameworkの\ \ v4.0.30319がsystem.data.dll \")。フルネーム
タグになります
System.Data、バージョン= 4.0.0.0、文化=中立、 なPublicKeyToken = b77a5c561934e089
また、法に従うことによって確認することができます。
を実行します:あなたは、公開鍵を必要のあるDLLのパスを入力します。 あなたは、2つのファイルを検索します。 1. __AssemblyInfo_.ini 2. DLLファイル
メモ帳でこの__AssemblyInfo_.iniファイルを開き、ここでは、公開キートークンを見ることができます。
@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");