hybridclr_unity/Editor/Commands/LinkGeneratorCommand.cs

40 lines
1.4 KiB
C#
Raw Normal View History

using HybridCLR.Editor.Link;
using HybridCLR.Editor.Meta;
2022-09-22 08:56:07 +08:00
using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEditor;
using UnityEngine;
namespace HybridCLR.Editor.Commands
{
using Analyzer = HybridCLR.Editor.Link.Analyzer;
2022-09-22 08:56:07 +08:00
public static class LinkGeneratorCommand
{
2022-09-23 14:26:28 +08:00
[MenuItem("HybridCLR/Generate/LinkXml", priority = 100)]
2022-09-22 08:56:07 +08:00
public static void GenerateLinkXml()
{
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
CompileDllCommand.CompileDll(target);
GenerateLinkXml(target);
2022-09-22 08:56:07 +08:00
}
public static void GenerateLinkXml(BuildTarget target)
2022-09-22 08:56:07 +08:00
{
2022-10-09 20:53:13 +08:00
var ls = SettingsUtil.HybridCLRSettings;
2022-09-22 08:56:07 +08:00
List<string> hotfixAssemblies = SettingsUtil.HotUpdateAssemblyNamesExcludePreserved;
2022-09-22 08:56:07 +08:00
var analyzer = new Analyzer(MetaUtil.CreateHotUpdateAndAOTAssemblyResolver(target, hotfixAssemblies));
var refTypes = analyzer.CollectRefs(hotfixAssemblies);
2022-09-22 08:56:07 +08:00
Debug.Log($"[LinkGeneratorCommand] hotfix assembly count:{hotfixAssemblies.Count}, ref type count:{refTypes.Count} output:{Application.dataPath}/{ls.outputLinkFile}");
2022-09-22 08:56:07 +08:00
var linkXmlWriter = new LinkXmlWriter();
linkXmlWriter.Write($"{Application.dataPath}/{ls.outputLinkFile}", refTypes);
AssetDatabase.Refresh();
2022-09-22 08:56:07 +08:00
}
}
}