明らかに、.NETアセンブリが作成されると、対応する.pdbファイルパスの場所が内部に含まれます。参照のためのリンク: https://msdn.microsoft.com/en-us/library/ms241613.aspx対応する.pdbを.NETアセンブリ内で見つけるにはどうすればいいですか?
これはどのようにアクセスしますか?私はILSpyを使ってアセンブリを見てみましたが、見つけられませんでした。
明らかに、.NETアセンブリが作成されると、対応する.pdbファイルパスの場所が内部に含まれます。参照のためのリンク: https://msdn.microsoft.com/en-us/library/ms241613.aspx対応する.pdbを.NETアセンブリ内で見つけるにはどうすればいいですか?
これはどのようにアクセスしますか?私はILSpyを使ってアセンブリを見てみましたが、見つけられませんでした。
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
...
に似たデバッグディレクトリセクションの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);
}
あなたがプログラム的にパスを取得するか、ツールを使用したいのですか? – Jehof