Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio可扩展性,以编程方式创建项目_C#_Visual Studio_Extensibility - Fatal编程技术网

C# Visual Studio可扩展性,以编程方式创建项目

C# Visual Studio可扩展性,以编程方式创建项目,c#,visual-studio,extensibility,C#,Visual Studio,Extensibility,我试图以编程方式将测试项目添加到解决方案中。但是,当下面的代码执行时,我在“vhaSolution.GetProjectTemplate(“TestProject.zip”、“Csharp”)”行收到一个文件IO异常。该错误表示“任何安装的软件包都不支持指定的语言”。有人知道这是什么原因吗 public enum TestProjectType { Unit, Acceptance, Integration } publi

我试图以编程方式将测试项目添加到解决方案中。但是,当下面的代码执行时,我在“vhaSolution.GetProjectTemplate(“TestProject.zip”、“Csharp”)”行收到一个文件IO异常。该错误表示“任何安装的软件包都不支持指定的语言”。有人知道这是什么原因吗

   public enum TestProjectType
    {
        Unit,
        Acceptance,
        Integration
    }

 public static 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 (!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.8.0");
            Object vs = System.Activator.CreateInstance(vsType, true);
            EnvDTE80.DTE2 dte8Obj = (EnvDTE80.DTE2)vs;

            Solution2 vhaSolution = (Solution2)dte8Obj.Solution;
            vhaSolution.Open(fullyQualifiedSolutionFileName);

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

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

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


            Project vhaTestProj = vhaSolution.AddFromTemplate(testTemplateLocation,testDirName,testProjectName + ".proj",false);
            vhaTestProj.Save(String.Format("{0}\\{1}.proj",testDirName , testProjectName));



        }

我想出来了。我需要使用prog ID VisualStudio.DTE.9.0,以便它能够指向VS2008的正确注册表位置。

我找到了它。我需要使用prog ID VisualStudio.DTE.9.0,以便它能够指向VS2008的正确注册表位置