2016-08-08 2 views
4

明らかに、.NETアセンブリが作成されると、対応する.pdbファイルパスの場所が内部に含まれます。参照のためのリンク: https://msdn.microsoft.com/en-us/library/ms241613.aspx対応する.pdbを.NETアセンブリ内で見つけるにはどうすればいいですか?

これはどのようにアクセスしますか?私はILSpyを使ってアセンブリを見てみましたが、見つけられませんでした。

+0

あなたがプログラム的にパスを取得するか、ツールを使用したいのですか? – Jehof

答えて

1

dumpbinツールは、開発者コマンドプロンプトから使用できます。この

dumpbin /HEADERS YourAssembly.exe 

のようなCMDラインは、私は、以下のハック解決策になってきたこの

Microsoft (R) COFF/PE Dumper Version 14.00.24213.1 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file YourAssembly.exe 

... 


    Debug Directories 

     Time Type  Size  RVA Pointer 
    -------- ------- -------- -------- -------- 
    570B267F cv   11C 0000264C  84C Format: RSDS, {241A1713-D2EF-4838-8896-BC1C9D118E10}, 1, 
    C:\temp\VS\obj\Debug\YourAssembly.pdb 

... 
1

に似たデバッグディレクトリセクションのPDBファイルへのパスを示すだろう。
それは私のために動作しますが、私はその正しさを保証することはできません:)

public string GetPdbFile(string assemblyPath) 
{ 
    string s = File.ReadAllText(assemblyPath); 

    int pdbIndex = s.IndexOf(".pdb", StringComparison.InvariantCultureIgnoreCase); 
    if (pdbIndex == -1) 
     throw new Exception("PDB information was not found."); 

    int lastTerminatorIndex = s.Substring(0, pdbIndex).LastIndexOf('\0'); 
    return s.Substring(lastTerminatorIndex + 1, pdbIndex - lastTerminatorIndex + 3); 
} 

public string GetPdbFile(Assembly assembly) 
{ 
    return GetPdbFile(assembly.Location); 
} 
関連する問題