【发布时间】:2012-02-17 18:16:20
【问题描述】:
我想知道如何使用空 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++ 空项目模板。当我通过 IDE 手动创建新项目时,VC++ 空项目模板确实出现在已安装的模板中。 soln.GetProjectTemplate() 的参数应该是什么?它似乎没有将"VC++" 识别为一种语言。我知道"CSharp" 和"VisualBasic" 是有效选项。但我想要一个 VC++ 空项目。任何帮助将不胜感激。
【问题讨论】:
-
仅仅创建一个空的 VC++ 项目并将其用作模板还不够吗?
-
我正在考虑这一点,但从我目前收集到的信息来看,模板应该是 ZIP 格式的。打开空项目后,我尝试使用“导出模板”功能,但它被禁用。我不确定如何获取包含用作模板的必要文件的 ZIP。我也不明白的是:项目文件中的所有 GUID 会发生什么?它们是否为新项目重新生成?
-
我也找不到现成的 VC++ 模板。但我的建议是自己手动完成。即:创建一个空的VC++工程,随意设置;保存;在文本编辑器中打开;为您想要生成的任何数据放置占位符(例如#GUID#、#CPP_FILES# 等)。现在这是您自己的 VC++ 模板。当你想创建一个新项目时,从你的 C# 代码打开你的模板文件,用适当的数据替换占位符,你就完成了。
-
感谢您提出这个问题。我也碰巧考虑过这一点。这种方法再次让我分心的是必须生成 GUID,并更改需要更改的任何其他参数。如果这是我最终必须采用的方法,我想知道为什么 MS 不允许使用 VS 可扩展性 API 来处理 VC++ 项目模板,就像它在 C#、F# 和 VB 中所做的那样。这会很糟糕。我仍然希望有一种方法可以使用该框架,而不必编写代码来生成所有项目文件。我会稍等一下,看看是否有人可以分享一些魔法。
-
我猜 MS 对老式 C++ 的关注越来越少。不过,也许有一个 VC++ 模板可以从某个地方下载。如果它不起作用 - 然后手动编码不应该太复杂。顺便说一句,您还可以将模板项目文件作为 XML 遍历(例如,使用 XDocument)。替换 GUID 可能会变得很烦人,因此您最终可能会结合使用这两种技术。祝你好运!
标签: visual-studio-2010 visual-c++-2010 visual-studio-extensions envdte