Example #1
0
        public void CreateTestProject(string fullyQualifiedSolutionFileName, string projectName, TestProjectType testProjectType)
        {
            #region Argument Validation
            if (String.IsNullOrEmpty(fullyQualifiedSolutionFileName) || String.IsNullOrEmpty(fullyQualifiedSolutionFileName.Trim()))
            {
                throw new ArgumentNullException("fullyQualifiedSolutionFileName", "The solution file location is required.");
            }

            if (String.IsNullOrEmpty(projectName) || String.IsNullOrEmpty(projectName.Trim()))
            {
                throw new ArgumentNullException("projectName", "The project name is required.");
            }

            if (!System.IO.File.Exists(fullyQualifiedSolutionFileName))
            {
                throw new ArgumentException(String.Format("The file {0} specified does not exist.", fullyQualifiedSolutionFileName));
            }

            //if (testProjectType == null) testProjectType = TestProjectType.Unit;
            #endregion

            System.Type vsType = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
            Object      vs     = System.Activator.CreateInstance(vsType, true);

            EnvDTE80.DTE2 dte8Obj = (EnvDTE80.DTE2)vs;

            EnvDTE80.Solution2 vhaSolution = (EnvDTE80.Solution2)dte8Obj.Solution;
            //EnvDTE100.Solution4 vhaSolution = (EnvDTE100.Solution4)dte8Obj.Solution
            vhaSolution.Open(fullyQualifiedSolutionFileName);

            //TODO: Externalize company name
            string             cmpnyName            = "MCAF";
            string             testProjectName      = String.Format("{0}.{1}.{2}{3}", cmpnyName, projectName, testProjectType.ToString(), "Test");
            string             testTemplateLocation = vhaSolution.GetProjectTemplate("TestProject.zip", "CSharp");
            System.IO.FileInfo rootSolutionFolder   = new System.IO.FileInfo(fullyQualifiedSolutionFileName);

            //TODO: Externalize test directory name
            string testDirName = String.Format("{0}\\{1}\\{2}\\{3}", rootSolutionFolder.DirectoryName, "test", testProjectType.ToString(), testProjectName);

            if (!System.IO.Directory.Exists(testDirName))
            {
                //may throw an exception if the dir can't be created...
                System.IO.Directory.CreateDirectory(testDirName);
            }

            string csTemplatePath = vhaSolution.GetProjectTemplate("ConsoleApplication.zip", "CSharp");

            vhaSolution.AddFromTemplate(csTemplatePath, testDirName, testProjectName + ".proj", false);

            //EnvDTE.Project vhaTestProj = vhaSolution.AddFromTemplate(testTemplateLocation, testDirName, testProjectName + ".proj", false);
            //vhaTestProj.Save(String.Format("{0}\\{1}.proj", testDirName, testProjectName));
            vhaSolution.SaveAs(fullyQualifiedSolutionFileName);
        }
Example #2
0
        // TODO: Adjust language name based on whether we are using a web template
        private string GetProjectTemplatePath(string projectTemplate, string languageName)
        {
            string csharpProjectTemplate;

            if (languageName.Equals("csharp", StringComparison.OrdinalIgnoreCase) &&
                _csharpProjectTemplates.TryGetValue(projectTemplate, out csharpProjectTemplate))
            {
                return(_solution.GetProjectTemplate(csharpProjectTemplate, languageName));
            }

            string visualBasicProjectTemplate;

            if (languageName.Equals("visualbasic", StringComparison.OrdinalIgnoreCase) &&
                _visualBasicProjectTemplates.TryGetValue(projectTemplate, out visualBasicProjectTemplate))
            {
                return(_solution.GetProjectTemplate(visualBasicProjectTemplate, languageName));
            }

            return(_solution.GetProjectTemplate(projectTemplate, languageName));
        }
Example #3
0
        public void CreateTestSolution(string fullyQualifiedPath, string unqualifiedName)
        {
            EnvDTE.Solution soln = System.Activator.CreateInstance(Type.GetTypeFromProgID("VisualStudio.Solution")) as EnvDTE.Solution;
            soln.DTE.MainWindow.Visible = true;
            EnvDTE80.Solution2 soln2 = soln as EnvDTE80.Solution2;
            soln2.Create(fullyQualifiedPath, unqualifiedName);
            string csTemplatePath = soln2.GetProjectTemplate("ConsoleApplication.zip", "CSharp");

            soln.AddFromTemplate(csTemplatePath, fullyQualifiedPath, unqualifiedName, false);
            int x = soln.AddIns.Count;

            soln2.SaveAs(fullyQualifiedPath + unqualifiedName + ".sln");
        }