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