答えて

11

ReflectorやILSpyのようなツールを使用すると、完全修飾名を取得できます。アセンブリを選択し、そのアセンブリの上に配置する必要があります。 ILSpyでXNAのために:あなたはこれらのツールを使用したくない場合は

// C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.dll // Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553

は、あなたは、WindowsエクスプローラとVisual Studioコマンドプロンプトを使用して完全修飾名を把握することができます。

まず、アセンブリDLL - >プロパティ - >詳細を右クリックします。ここでは、あなたのアセンブリの名前、バージョン、文化を見つけることができます。

公開鍵については、Visual Studioコマンドプロンプトを起動し、書き込み:

sn -Tp YourAssembly.dll

は、それはあなたの公開鍵を提供します。

これで、完全修飾名を偽造できます。

2
Process[] processlist = Process.GetProcesses(); 

foreach(Process theprocess in processlist) 
{ 
    string strongName = "N/A"; 
    try 
    { 
     strongName = Assembly.ReflectionOnlyLoadFrom(theprocess.MainModule.FileName).FullName; 
    } 
    catch 
    { 
     // System process? 
    } 
    Console.WriteLine("Process: {0} ID: {1} Strong Name: {2}", theprocess.ProcessName, theprocess.Id, strongName); 

ファイル名がわかっている場合はPE headers to find the strong name signatureを処理できます。 }

11

Strong Nameツールを使用して、アセンブリに厳密な名前が付いているかどうかを判断できます。コマンドプロンプトでこれを実行して、強力な名前付きアセンブリであることを確認できます。

sn -v "C:\MyAssemblyPath" 

や公共トークンを取得するために、あなたはまた、公開キートークンを見つけるために、ReflectorまたはILSpyを使用することができ、この

sn -T "C:\MyAssemblyPath" 

を行うことができます。

パブリックトークンを含むアセンブリの完全な名前を取得する場合は、Assembly.FullNameを使用できます。

Assembly.GetExecutingAssembly().FullName; 
+1

これは、Visual Studioからプロジェクトソースが読み込まれたときにこれを行う方法はありませんか? –

+0

sn -tは私のためには機能しませんでした。「キーをトークンに変換できませんでした - 無効なアセンブリ公開鍵」。 Paul Gillenの答えはうまくいった(-Tp)が、私はこれがVS内ではできないと不満を抱いていることを認めなければならない。 VISUALスタジオツールのコマンドラインに頼らざるを得ないことは馬鹿馬鹿しいようです。 –

+0

申し訳ありませんが、大文字の「T」(更新された回答)にする必要があります。それはVSでそれを行う方法は奇妙に思えるが、 'sn.exe'を外部ツールのリストに追加し、引数を' -T $(TargetPath) 'に設定することができるので、VSから直接アクセスすることができます。私はちょうどそれを試したところ、うまくいくように見え、ツールが 'Tools'メニューから選択されるたびに現在のプロジェクトの公開鍵が表示されます。 – keyboardP

関連する問題