Zack.DotNetTrimmerLib/TraceEventProcessor.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.Diagnostics.Tracing;
using Microsoft.Diagnostics.Tracing.Parsers.Clr;
using System.Reflection;
namespace Zack.DotNetTrimmerLib
{
static class TraceEventProcessor
{
public static void Process(RecordFileInfo recordFileInfo, TraceEvent obj)
{
if (obj is KnownPathProbedTraceData)
{
var data = (KnownPathProbedTraceData)obj;
recordFileInfo.LoadedAssemblies.Add(Path.GetFileName(data.FilePath));
}
else if (obj is ResolutionAttemptedTraceData)
{
var data = (ResolutionAttemptedTraceData)obj;
string asmFullPath = data.ResultAssemblyPath;
if (!string.IsNullOrWhiteSpace(asmFullPath))
{
recordFileInfo.LoadedAssemblies.Add(Path.GetFileName(asmFullPath));
}
if (!string.IsNullOrWhiteSpace(data.ResultAssemblyName))
{
recordFileInfo.LoadedAssemblies.Add(new AssemblyName(data.ResultAssemblyName).Name + ".dll");
}
}
else if (obj is ModuleLoadUnloadTraceData)
{
var data = (ModuleLoadUnloadTraceData)obj;
string asmFullPath = data.ModuleILPath;
if (!string.IsNullOrWhiteSpace(asmFullPath))
{
recordFileInfo.LoadedAssemblies.Add(Path.GetFileName(asmFullPath));
}
}
//for Linux
else if (obj is DomainModuleLoadUnloadTraceData)
{
var data = (DomainModuleLoadUnloadTraceData)obj;
string asmFullPath = data.ModuleILPath;
recordFileInfo.LoadedAssemblies.Add(Path.GetFileName(asmFullPath));
}
else if (obj is TypeLoadStopTraceData)
{
var data = (TypeLoadStopTraceData)obj;
string typeName = data.TypeName;
recordFileInfo.LoadedTypes.Add(typeName);
}
else if (obj is GCBulkTypeTraceData)
{
var data = (GCBulkTypeTraceData)obj;
for (int i = 0; i < data.Count; i++)
{
string typeName = data.Values(i).TypeName;
recordFileInfo.LoadedTypes.Add(typeName);
}
}
else if (obj is R2RGetEntryPointTraceData)
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。