我有一个使用procdump创建的.NET framework
应用程序转储。我可以创建console .NET framework 4.6.1
应用程序,安装ClrMd
nuget软件包并编写以下代码以开始一些检查:
using(var dt = DataTarget.LoadCrashDump(@"C:\temp\dump.dmp"))
{
var rt = dt.ClrVersions.First().CreateRuntime();
Console.WriteLine(rt.ThreadPool.TotalThreads);
}
工作正常。
如果我使用相同的转储执行相同的操作,但是在dotnet core 2.2 console
应用程序中,我将遇到异常Could not find matching DAC for this runtime
。
为什么在第一种情况下有效,但在第二种情况下无效?
答案 0 :(得分:0)
为正确读取转储,ClrMD加载一个mscordacwks.dll
匹配项(或至少紧密匹配)创建该转储的运行时版本。由于dotnet core与.NET Framework不兼容,因此无法加载该dll。