private void AddConfig(object sender, EventArgs e) { string folder = _item.ContainingProject.GetRootFolder(); string configFile = _item.ContainingProject.GetConfigFile(); string relativeFile = FileHelpers.MakeRelative(configFile, ProjectHelpers.GetSelectedItemPaths().First()); // Recompile if already configured if (_reCompileConfigs.Any()) { string absoluteFile = Path.Combine(folder, relativeFile).Replace("/", "\\"); Telemetry.TrackEvent("VS recompile config"); CompilerService.SourceFileChanged(configFile, absoluteFile); return; } // Create new config WebCompilerPackage._dte.StatusBar.Progress(true, "Compiling file", 0, 3); string inputFile = _item.Properties.Item("FullPath").Value.ToString(); string outputFile = GetOutputFileName(inputFile); if (string.IsNullOrEmpty(outputFile)) { return; } string relativeOutputFile = FileHelpers.MakeRelative(configFile, outputFile); Config config = CreateConfigFile(relativeFile, relativeOutputFile); WebCompilerPackage._dte.StatusBar.Progress(true, "Compiling file", 1, 3); ProjectHelpers.CheckFileOutOfSourceControl(configFile); ConfigHandler handler = new ConfigHandler(); handler.AddConfig(configFile, config); _item.ContainingProject.AddFileToProject(configFile, "None"); WebCompilerPackage._dte.StatusBar.Progress(true, "Compiling file", 2, 3); // Create defaults file string defaultsFile = Path.Combine(folder, Constants.DEFAULTS_FILENAME); ProjectHelpers.CheckFileOutOfSourceControl(defaultsFile); handler.CreateDefaultsFile(defaultsFile); ProjectHelpers.AddNestedFile(configFile, defaultsFile, "None"); WebCompilerPackage._dte.StatusBar.Progress(true, "Creating defaults file", 3, 3); CompilerService.Process(configFile, new[] { config }); WebCompilerPackage._dte.StatusBar.Progress(false, "Compiling file"); Telemetry.TrackEvent("VS config created"); }