如何以编程方式创建Empty Visual C ++项目?

时间:2012-02-17 18:16:20

标签: visual-studio-2010 visual-c++-2010 visual-studio-extensions envdte

我想知道如何使用Empty Visual C ++项目的模板以编程方式使用此空项目创建新解决方案。我现在的代码(C#)是:

string VSProgID = "VisualStudio.Solution.10.0";
Type solnObjType = System.Type.GetTypeFromProgID(VSProgID, true);
Solution4 soln = (Solution4) System.Activator.CreateInstance(solnObjType, true);
soln.Create(@"C:\NewSoln", "New");
soln.SaveAs(@"C:\NewSoln\New.sln");
string emptyVCProjPath = soln.GetProjectTemplate("General/Empty Project", "VC++"); // Here's where I need help
soln.AddFromTemplate(emptyVCProjPath, @"C:\NewSoln\NewProj", "New.vcxproj", false);

我无法在所有其他模板(C#/ F#/ VB)所在的位置找到VC ++ Empty Project模板。当我通过IDE手动创建新项目时,VC ++空项目模板确实出现在已安装的模板中。 soln.GetProjectTemplate()的参数应该是什么?它似乎不会将"VC++"视为一种语言。我知道"CSharp""VisualBasic"是有效选项。但我想要一个VC ++空项目。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我发布这个答案,希望它可以帮助那些面临同样问题的人。

显然,Visual Studio Extensibility框架API不提供以编程方式创建Empty Visual C ++项目的选项。我必须生成解决方案和项目文件来实现这一目标。具体而言,必须生成[solution_name].sln[project_name].vcxproj[project_name].vcxproj.filters文件。必须为新项目生成GUID并将其插入适当的位置。如果需要向此空项目添加文件,则需要为头文件生成ClInclude标记,并为源文件生成ClCompile标记。这些标记会添加到[project_name].vcxproj[project_name].vcxproj.filters文件中。请参阅现有的Visual C ++项目文件,以帮助您找出原因。这很简单。


<强>更新

由于某种原因,以这种方式生成的VC ++解决方案无法直接打开(通过双击Windows资源管理器中的解决方案文件)。我必须启动Visual Studio并从那里打开解决方案。