示例#1
0
 internal abstract void Execute(ExportSettings settings, ExportData data);
示例#2
0
 internal override void Execute(ExportSettings settings, ExportData data)
 {
     CheckSerializationMode();
     VerifyProject();
     VerifySettings(settings);
 }
示例#3
0
        internal override void Execute(ExportSettings settings, ExportData data)
        {
            if ((data.content & ModContent.Code) != ModContent.Code)
            {
                return;
            }

            foreach (Asset script in data.scripts)
            {
                script.Delete();
            }

            string prefix = data.prefix.Replace(" ", "");

            if (!string.IsNullOrEmpty(settings.version))
            {
                prefix += settings.version.Replace(" ", "") + "-";
            }

            List <string> searchDirectories = GetSearchDirectories();

            foreach (string scriptAssembly in scriptAssemblies)
            {
                string scriptAssemblyPath = Path.Combine(tempAssemblyDirectory, scriptAssembly);

                if (!File.Exists(scriptAssemblyPath))
                {
                    continue;
                }

                AssemblyDefinition     assembly     = AssemblyDefinition.ReadAssembly(scriptAssemblyPath);
                AssemblyNameDefinition assemblyName = assembly.Name;

                DefaultAssemblyResolver resolver = (DefaultAssemblyResolver)assembly.MainModule.AssemblyResolver;

                foreach (string searchDirectory in searchDirectories)
                {
                    resolver.AddSearchDirectory(searchDirectory);
                }

                assemblyName.Name = prefix + assemblyName.Name;

                foreach (var reference in assembly.MainModule.AssemblyReferences)
                {
                    if (reference.Name.Contains("firstpass"))
                    {
                        reference.Name = prefix + reference.Name;
                    }
                }

                scriptAssemblyPath = Path.Combine(modToolDirectory, assemblyName.Name + ".dll");

                assembly.Write(scriptAssemblyPath);

                data.scriptAssemblies.Add(new Asset(scriptAssemblyPath));
            }

            if (data.scriptAssemblies.Count > 0)
            {
                AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate | ImportAssetOptions.DontDownloadFromCacheServer);
                ForceAssemblyReload();
            }
        }