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);
     }
 }
示例#2
0
 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 &#45 with &#8208

            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);
        }