アセンブリの公開キートークンを見つける最も簡単な方法は何ですか?
私が考えることができる最も簡単な方法は、単純な右クリックで公開鍵を取得することですが、この機能はありません。おそらくそのためのVisual Studio Extensionがありますか?
拡張機能が利用可能な場合は、Visual Studio 2010を使用しています。
アセンブリの公開キートークンを見つける最も簡単な方法は何ですか?
私が考えることができる最も簡単な方法は、単純な右クリックで公開鍵を取得することですが、この機能はありません。おそらくそのためのVisual Studio Extensionがありますか?
拡張機能が利用可能な場合は、Visual Studio 2010を使用しています。
回答:
コマンドプロンプトを開き、Visual Studioのバージョンとオペレーティングシステムアーキテクチャに応じて、次のいずれかの行を入力します。
32ビットWindows上のVS 2008:
"%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin\sn.exe" -T <assemblyname>
64ビットWindows上のVS 2008:
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\bin\sn.exe" -T <assemblyname>
32ビットWindows上のVS 2010:
"%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\bin\sn.exe" -T <assemblyname>
64ビットWindows上のVS 2010:
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\sn.exe" -T <assemblyname>
32ビットWindows上のVS 2012:
"%ProgramFiles%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
64ビットWindows上のVS 2012:
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
64ビットWindows上のVS 2015:
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe" -T <assemblyname>
バージョンVS2012 +の場合、sn.exeアプリケーションはbinではなくサブフォルダーにあることに注意してください。また、64ビットの場合、(x86)フォルダーを指定する必要があることに注意してください。
Visual Studioコマンドプロンプトを使用する場合は、次のように入力します。
sn -T <assembly>
どこ<assemblyname>
にスペースがある場合、引用符で囲まれたアセンブリますよ興味中への完全なファイルパスは、です。
ここに示すように、これをVSの外部ツールとして追加できます。http:
//blogs.msdn.com/b/miah/archive/2008/02/19/visual-studio-tip-get-public-key-token -for-a-stong-named-assembly.aspx
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -T <assemblyname>
ます。snは、(NETFX 4.0ツールでは)binの後に1つの追加のフォルダーレベルに隠れています。
別のオプション:
PowerShellを使用している場合、次のようなことがわかります。
PS C:\Users\Pravat> ([system.reflection.assembly]::loadfile("C:\Program Files (x86)\MySQL\Connector NET 6.6.5\Assemblies\v4.0\MySql.Data.dll")).FullName
お気に入り
PS C:\Users\Pravat> ([system.reflection.assembly]::loadfile("dll full path")).FullName
のように表示されます
MySql.Data、バージョン= 6.6.5.0、カルチャー=ニュートラル、PublicKeyToken = c5687fc88969c44d
ライブラリがVSプロジェクトに含まれている場合は、.cproj
ファイルを確認できます。例:
<ItemGroup>
<Reference Include="Microsoft.Dynamic, Version=1.1.0.20, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
...
<Reference Include="System.Configuration" />
PublicKeyToken
であるように見えるので、1つのルックアップが.cproj
最も簡単な解決策のようです。
プロジェクトにアセンブリを含めた場合、次のことができます。
var assemblies =
AppDomain.CurrentDomain.GetAssemblies();
foreach (var assem in assemblies)
{
Console.WriteLine(assem.FullName);
}
AppDomain.CurrentDomain.GetAssemblies()
。これにより、ロードされたアセンブリがイミディエイトウィンドウにリストされ、それぞれにバージョン、カルチャ、およびPublicKeyTokenが表示されます。
これはc#から簡単に取得できます
private static string GetPublicKeyTokenFromAssembly(Assembly assembly)
{
var bytes = assembly.GetName().GetPublicKeyToken();
if (bytes == null || bytes.Length == 0)
return "None";
var publicKeyToken = string.Empty;
for (int i = 0; i < bytes.GetLength(0); i++)
publicKeyToken += string.Format("{0:x2}", bytes[i]);
return publicKeyToken;
}
typeof(YourPreferredTypeInThatAssembly).Assembly
またはAssembly.GetAssembly(typeof(YourPreferredTypeInThatAssembly))
、必要に応じてそれをメソッドに渡すことができ ます。
次のように、これを外部ツールとしてVisual Studioに追加できます。
題名:
Get PublicKeyToken
コマンド:
c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\sn.exe
(パスはバージョン間で異なる場合があります)
引数:
-T "$(TargetPath)"
「出力ウィンドウを使用する」オプションをチェックします。
Tools
メニューから選択すると、ソリューションエクスプローラーで選択したプロジェクトに対して自動的に機能します。
Get PublicKeyToken on Solution Explorer Selection
。
アセンブリをウィンドウにドラッグアンドドロップし、ドロップしたアセンブリを左側で選択すると、ウィンドウの右側に公開キートークンが表示されます。
(必要に応じて、新しいバージョンでも署名の公開鍵が表示されると思います... https://github.com/icsharpcode/ILSpy/issues/610#issuecomment-111189234を参照してください。いい物! ;))
1)コマンドは C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn -T {your.dll}
上記の例では、Microsoft SDKはC:\ Program Files \ Microsoft SDKs \ Windows \ v6.0Aにあります。実際の環境は異なる場合があります。
2)プロジェクトの公開鍵トークンを取得するには、Visual Studioの外部ツールの一部としてsn.exeを追加します。手順はこのMicrosoftリンクに示されています。方法:アセンブリの公開キーを取得するツールを作成する
誰かが公開キートークンではなく、アセンブリの公開キー(私のような)を探していた場合-sn.exeを使用するとうまくいきますが、公開キーと公開キートークンの両方を返す-Tpスイッチを使用する必要があります-詳細でhttps://msdn.microsoft.com/en-us/library/office/ee539398(v=office.14).aspx。
もう1つのオプションは、オープンソースツールのNuGet Package Explorerを使用することです。
Nugetパッケージ(.nupkg)から、PublicKeyTokenを確認するか、バイナリ(.dll)をツールにドラッグできます。後者の場合、最初に「ファイル->新規」を選択します
Ildasm.exe(IL逆アセンブラー)を使用して、完全修飾名を含むアセンブリのメタデータを調べることができます。
MSDNに続く:https : //msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx