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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。