public static void CreateAssembly()
        {
            var settings = ProjectUtility.GetOrCreateProjectSettings <ActionGraphGlobalSettings>();
            var output   = settings.actionSystemsDLLDirectory + "/" + AssemblyName + ".dll";

            if (!Directory.Exists(settings.actionSystemsDLLDirectory))
            {
                Directory.CreateDirectory(settings.actionSystemsDLLDirectory);
            }
            var definitions = ActionDefinitionAsset.LoadAll().ToArray();

            using var resolver = new DefaultAssemblyResolver();
            resolver.AddSearchDirectory("Library/ScriptAssemblies");
            using (var assembly = AssemblyDefinition.CreateAssembly(new AssemblyNameDefinition(AssemblyName, new Version(1, 0, 0, 0)), AssemblyName, new ModuleParameters {
                Kind = ModuleKind.Dll, AssemblyResolver = resolver, Runtime = TargetRuntime.Net_4_0,
            })) {
                var actionAssetMenusType = new TypeDefinition("NeroWeNeed.ActionGraph.Generated", ActionAssetMenuTypeName, TypeAttributes.NotPublic | TypeAttributes.Abstract | TypeAttributes.Sealed, assembly.MainModule.TypeSystem.Object);
                GenerateMenus(assembly, assembly.MainModule, actionAssetMenusType, definitions);
                assembly.MainModule.Types.Add(actionAssetMenusType);
                assembly.Write(output);
            }
            AssetDatabase.ImportAsset(output);
        }