protected override void DoBuild(string[] extraClasspaths, bool noTrace) { string tempFile = null; Environment.CurrentDirectory = project.Directory; try { string objDir = "obj"; if (!Directory.Exists(objDir)) { Directory.CreateDirectory(objDir); } tempFile = GetTempProjectFile(project); //create new config file double sdkVersion = ParseVersion(FDBuild.Program.BuildOptions.CompilerVersion ?? "4.0"); // create compiler configuration file string projectName = project.Name.Replace(" ", ""); string backupConfig = Path.Combine(objDir, projectName + "Config.old"); string configFileTmp = Path.Combine(objDir, projectName + "Config.tmp"); string configFile = Path.Combine(objDir, projectName + "Config.xml"); // backup the old Config.xml to Config.old so we can reference it if (File.Exists(configFile)) { File.Copy(configFile, backupConfig, true); } //write "new" config to tmp FlexConfigWriter config = new FlexConfigWriter(project.GetAbsolutePath(configFileTmp)); config.WriteConfig(project, sdkVersion, extraClasspaths, noTrace == false, asc2Mode); //compare tmp to current bool configChanged = !File.Exists(backupConfig) || !File.Exists(configFile) || !FileComparer.IsEqual(configFileTmp, configFile); //copy temp file to config if there is a change if (configChanged) { File.Copy(configFileTmp, configFile, true); } //remove temp File.Delete(configFileTmp); MxmlcArgumentBuilder mxmlc = new MxmlcArgumentBuilder(project, sdkVersion, asc2Mode); mxmlc.AddConfig(configFile); mxmlc.AddOptions(noTrace, fcsh != null); mxmlc.AddOutput(tempFile); string mxmlcArgs = mxmlc.ToString(); if (asc2Mode) { mxmlcArgs = AddBaseConfig(mxmlcArgs); Console.WriteLine("mxmlc-cli " + mxmlcArgs); } else { Console.WriteLine("mxmlc " + mxmlcArgs); } CompileWithMxmlc(project.Directory, mxmlcArgs, configChanged); // if we get here, the build was successful string output = project.FixDebugReleasePath(project.OutputPathAbsolute); string outputDir = Path.GetDirectoryName(output); if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } File.Copy(tempFile, output, true); } finally { if (tempFile != null && File.Exists(tempFile)) { File.Delete(tempFile); } } }
protected override void DoBuild(string[] extraClasspaths, bool noTrace) { string tempFile = null; Environment.CurrentDirectory = project.Directory; try { string objDir = "obj"; if (!Directory.Exists(objDir)) Directory.CreateDirectory(objDir); tempFile = GetTempProjectFile(project); //create new config file double sdkVersion = ParseVersion(FDBuild.Program.BuildOptions.CompilerVersion ?? "4.0"); if (asc2Mode) sdkVersion -= 1.6; // create compiler configuration file string projectName = project.Name.Replace(" ", ""); string backupConfig = Path.Combine(objDir, projectName + "Config.old"); string configFileTmp = Path.Combine(objDir, projectName + "Config.tmp"); string configFile = Path.Combine(objDir, projectName + "Config.xml"); // backup the old Config.xml to Config.old so we can reference it if (File.Exists(configFile)) File.Copy(configFile, backupConfig, true); //write "new" config to tmp FlexConfigWriter config = new FlexConfigWriter(project.GetAbsolutePath(configFileTmp)); config.WriteConfig(project, sdkVersion, extraClasspaths, noTrace == false); //compare tmp to current bool configChanged = !File.Exists(backupConfig) || !File.Exists(configFile) || !FileComparer.IsEqual(configFileTmp, configFile); //copy temp file to config if there is a change if (configChanged){ File.Copy(configFileTmp, configFile, true); } //remove temp File.Delete(configFileTmp); MxmlcArgumentBuilder mxmlc = new MxmlcArgumentBuilder(project, sdkVersion); mxmlc.AddConfig(configFile); mxmlc.AddOptions(noTrace, fcsh != null); mxmlc.AddOutput(tempFile); string mxmlcArgs = mxmlc.ToString(); if (asc2Mode) { mxmlcArgs = AddBaseConfig(mxmlcArgs); Console.WriteLine("mxmlc-cli " + mxmlcArgs); } else Console.WriteLine("mxmlc " + mxmlcArgs); CompileWithMxmlc(project.Directory, mxmlcArgs, configChanged); // if we get here, the build was successful string output = project.FixDebugReleasePath(project.OutputPathAbsolute); string outputDir = Path.GetDirectoryName(output); if (!Directory.Exists(outputDir)) Directory.CreateDirectory(outputDir); File.Copy(tempFile, output, true); } finally { if (tempFile != null && File.Exists(tempFile)) File.Delete(tempFile); } }