ILspy を使用して dll をデバッグしたいのですが、pic のように:
しかし、それは2つのプロセスしか表示できません:
しかし、vs2010 では、より多くのプロセスをアタッチできます。
ILspy で w3wp.exe を表示するには? 誰が私を助けることができます?
ILSpy を管理者として実行すると、この問題が解決されました。
ILSpyソースコード(ICSharpCode.ILSpy.Debugger.UI.AttachToProcessWindow)から:
Process currentProcess = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcesses()) {
try {
if (process.HasExited) continue;
// Prevent attaching to our own process.
if (currentProcess.Id != process.Id) {
bool managed = false;
try {
var modules = process.Modules.Cast<ProcessModule>().Where(
m => m.ModuleName.StartsWith("mscor", StringComparison.OrdinalIgnoreCase));
managed = modules.Count() > 0;
} catch { }
if (managed) {
list.Add(new RunningProcess {
ProcessId = process.Id,
ProcessName = Path.GetFileName(process.MainModule.FileName),
FileName = process.MainModule.FileName,
WindowTitle = process.MainWindowTitle,
Managed = "Managed",
Process = process
});
}
}
} catch (Win32Exception) {
// Do nothing.
}
}
比較的簡単なようです...
これはプレビューソフトウェアであるため、プロセスがマネージコードを使用しているかどうかを判断するためのこのアルゴリズムに欠陥がある可能性があります。
ソースコードをダウンロードして変更するだけで、この問題を回避できる可能性があります
bool managed = false;
に
bool managed = true;
と再コンパイルします。
IIS7のフルバージョンがインストールされていないため、問題を再現することはできませんが、Visual Studio開発サーバーはILSpyで正常に表示されますが、表示されないため、同じ問題が発生することはないと思います。おそらく、上記のアルゴリズムを台無しにするあなたの環境について何か違うことがあります。
32 ビット対 64 ビットも何らかの役割を果たしている可能性があります