我想用ILspy调试一个DLL,如PIC:
但它只能显示两个过程:
但在VS2010,我可以将更多的过程:
如何显示ILspy w3wp.exe的? 谁能帮我?
我想用ILspy调试一个DLL,如PIC:
但它只能显示两个过程:
但在VS2010,我可以将更多的过程:
如何显示ILspy w3wp.exe的? 谁能帮我?
从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,而你没有。 也许有你的环境不同的东西,与上面的算法搅乱。
运行ILSpy作为管理员解决了这个问题对我来说。
32位和64位的可能也发挥一些作用