public void AddProject(string projectName, string projectTemplate, string languageName) { var projectPath = Path.Combine(DirectoryName, projectName); var projectTemplatePath = GetProjectTemplatePath(projectTemplate, ConvertLanguageName(languageName)); _solution.AddFromTemplate(projectTemplatePath, projectPath, projectName, Exclusive: false); }
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); }