2

我有一个使用procdump创建的 .NET 框架应用程序的转储。我可以创建控制台 .NET 框架 4.6.1 应用程序,安装ClrMdnuget 包并编写此代码以开始一些检​​查:

using(var dt = DataTarget.LoadCrashDump(@"C:\temp\dump.dmp"))
{
    var rt = dt.ClrVersions.First().CreateRuntime();
    Console.WriteLine(rt.ThreadPool.TotalThreads);
}

它工作正常。

如果我使用相同的转储但在 dotnet core 2.2 控制台应用程序中执行相同的操作,我将面临异常Could not find matching DAC for this runtime

为什么它在第一种情况下有效,而在第二种情况下无效?

4

1 回答 1

0

为了正确读取转储,ClrMD 会加载mscordacwks.dll与创建转储的运行时版本匹配(或至少紧密匹配)的版本。由于 dotnet core 与 .NET Framework 不兼容,因此无法加载此 dll。

于 2019-08-05T11:34:53.793 回答