| 123456789101112131415161718192021222324252627282930313233343536373839 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using UnityEditor;using UnityEditor.Build;namespace HybridCLR.Editor.Commands{    public static class PrebuildCommand    {        /// <summary>        /// 按照必要的顺序,执行所有生成操作,适合打包前操作        /// </summary>        [MenuItem("HybridCLR/Generate/All", priority = 200)]        public static void GenerateAll()        {            var installer = new Installer.InstallerController();            if (!installer.HasInstalledHybridCLR())            {                throw new BuildFailedException($"You have not initialized HybridCLR, please install it via menu 'HybridCLR/Installer'");            }            BuildTarget target = EditorUserBuildSettings.activeBuildTarget;            CompileDllCommand.CompileDll(target, EditorUserBuildSettings.development);            Il2CppDefGeneratorCommand.GenerateIl2CppDef();            // 这几个生成依赖HotUpdateDlls            LinkGeneratorCommand.GenerateLinkXml(target);            // 生成裁剪后的aot dll            StripAOTDllCommand.GenerateStripedAOTDlls(target);            // 桥接函数生成依赖于AOT dll,必须保证已经build过,生成AOT dll            MethodBridgeGeneratorCommand.GenerateMethodBridgeAndReversePInvokeWrapper(target);            AOTReferenceGeneratorCommand.GenerateAOTGenericReference(target);        }    }}
 |