private void SetStartupFromRow(ParsedRow parsedRow) { ThreadHelper.ThrowIfNotOnUIThread(); if (parsedRow == null || parsedRow.project == null) { return; } try { dynamic vcPrj = (dynamic)parsedRow.project.Object; // is VCProject dynamic vcCfg = vcPrj.ActiveConfiguration; // is VCConfiguration dynamic vcDbg = vcCfg.DebugSettings; // is VCDebugSettings vcDbg.Command = parsedRow.command; vcDbg.CommandArguments = parsedRow.commandArguments; toolwindow.Caption = "Args: " + parsedRow.title; UIHierarchyItem item = Utils.FindUIHierarchyItem(parsedRow.project); item.Select(vsUISelectionType.vsUISelectionTypeSelect); if (dte.Solution.SolutionBuild.BuildState != vsBuildState.vsBuildStateInProgress) { dte.Solution.Properties.Item("StartupProject").Value = parsedRow.project.Name; } } catch (Exception ex) { Utils.PrintMessage("Exception", ex.Message + "\n" + ex.StackTrace, true); } }
public static void SetFieldFrom(this object self, ParsedRow row) => row.Field.SetValue(self, row.Value);
private ParsedRow ParseRow(DataRow row) { ThreadHelper.ThrowIfNotOnUIThread(); if (row == null) { return(null); } string arguments = row["CommandArguments"] as string; if (arguments == null) { return(null); } ParsedRow parsedRow = new ParsedRow(); parsedRow.title = arguments.Replace("-", "‐"); // replcace - with ‐ string restArguments = arguments; string firstArgument = GetFirstArgument(ref restArguments); parsedRow.testCase = dataBase?.FindCaseByName(firstArgument); // Example: M3DTriangleTree_collision_0 --numthreads 1 if (parsedRow.testCase != null && testSystemRoot != null) { ParseFileNameWithLineNumber(parsedRow.testCase.sourceFile, out parsedRow.fileName, out parsedRow.lineNumber); parsedRow.project = dte.Solution.FindProjectItem(parsedRow.fileName)?.ContainingProject; if (parsedRow.project == null) { System.Windows.Forms.MessageBox.Show("Testable project is not found:\n" + parsedRow.fileName); } parsedRow.command = testSystemRoot + @"AlgoTester.exe"; parsedRow.commandArguments = @"--cases_root """ + ReplaceBackslashesWithSlashes(parsedRow.testCase.caseFolder) + @""" " + @"--settings """ + ReplaceBackslashesWithSlashes(testSystemRoot) + @"../settings.config"" " + @"--bins_root """ + ReplaceBackslashesWithSlashes(((dynamic)parsedRow.project.Object).ActiveConfiguration.OutputDirectory) + @""" " + @"--case """ + parsedRow.testCase.caseName + @""" " + @"--additionaltime 86400000 " + restArguments; } else { ParseFileNameWithLineNumber(row["Filename"] as string, out parsedRow.fileName, out parsedRow.lineNumber); foreach (Project p in Utils.GetAllProjectsInSolution()) { if (p.Name == firstArgument) { // Example: Project.Tests -suite UserTest parsedRow.project = p; } } if (parsedRow.project == null) { // Example: -test UserTest parsedRow.project = dte.Solution.FindProjectItem(parsedRow.fileName)?.ContainingProject; parsedRow.commandArguments = arguments; } else { parsedRow.commandArguments = restArguments; } parsedRow.command = "$(TargetPath)"; } return(parsedRow); }