我正在尝试使用 linux centos7 中的 CoreCLR Profiler 来检测在 .NET Core 3.1 上运行的 .NET Core Web 应用程序。我已经设置了环境值 CORECLR_PROFILER 、 CORECLR_ENABLE_PROFILING 和 CORECLR_PROFILER_PATH ,其中我的 CoreCLRProfiler dll 附加到 dotnet.exe 并且它正在获取回调。
我能够获取所有回调,但是当我允许将代码注入 Web 应用程序的方法时,应用程序将崩溃(dotnet.exe 被杀死),因为它找不到注入的函数调用。
我用注入的函数体创建了辅助程序集(.NET 标准 2.0),并用强名称对其进行了签名,并将其安装到 GAC 中。并且还使用了来自 IMetaDataAssemblyEmit 的 DefineAssemblyRef()、DefineTypeRefByName() 和 DefineMemberRef() 来加载程序集及其类方法。并且还尝试将 dotnet 标准 dll 放在应用程序文件夹中。但是辅助程序集未加载到 dotnet.exe 进程。
我的助手程序集应该放在哪里..?和
如何从我的本机 coreclr 分析器将辅助程序集加载到 dotnet 进程?
如果我得到一些正确的方向来加载或使用辅助程序集来处理 dotnet 进程,那将非常有帮助。
提前致谢。